p_table <- function(tab_data, ...) {
tab_data_2 <- deparse(substitute(tab_data))
table_p <- do.call(CreateTableOne,
list(data = as.name(tab_data_2), includeNA = TRUE, ...))
table_p_out <- print(table_p,
showAllLevels = TRUE,
printToggle = FALSE)
kable(table_p_out,
align = "c")
}
uni_var <- function(test_var, data_imp) {
cat("_________________________________________________")
cat("\n")
cat(" \n##", test_var)
cat("\n")
cat("_________________________________________________")
cat("\n")
f <- as.formula(paste("Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)",
as.name(test_var),
sep = " ~ " ))
data_imp_2 <- deparse(substitute(data_imp))
km_fit <- do.call("survfit", list(formula = f, data = as.name(data_imp_2)))
print(km_fit)
cat("\n")
print(summary(km_fit, times = c(12, 24, 36, 48, 60, 120)))
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Univariable Cox Proportional Hazard Model for: ", test_var)
cat("\n")
cat("\n")
n_levels <- nlevels(data_imp[[test_var]])
if(n_levels == 1){
print("Only one level, no Cox model performed")
cat("\n")
} else {
cox_fit <- do.call("coxph", list(formula = f, data = as.name(data_imp_2)))
print(summary(cox_fit))
cat("\n")
do.call("ggforest",
list(model = cox_fit, data = as.name(data_imp_2)))
}
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Unadjusted Kaplan Meier Overall Survival Curve for: ", test_var)
p <- do.call("ggsurvplot",
list(fit = km_fit, data = as.name(data_imp_2),
palette = "jco", censor = FALSE, legend = "right",
linetype = "strata", xlab = "Time (Months)"))
print(p)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
"AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
"MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
"UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
"YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
"DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
"REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
"TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
"CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
"CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
"CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
"CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
"CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
"CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
"CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
"CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
"CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
"CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
"CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
"RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
"RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
"REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
"RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
"RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
"REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
"DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
"RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
"PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
"DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
"RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
"RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
"METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
"METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLextr <- read_fwf('NCDBPUF_NHLExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
breast <- read_fwf('NCDBPUF_Breast.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vulva <- read_fwf('NCDBPUF_Vulva.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vagina <- read_fwf('NCDBPUF_Vagina.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
penis <- read_fwf('NCDBPUF_Penis.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otleuk <- read_fwf('NCDBPUF_OtLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otheracuteleuk <- read_fwf('NCDBPUF_OtAcLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
ALL <- read_fwf('NCDBPUF_ALymLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast,
vulva, vagina, penis, NHLextr, otleuk, otheracuteleuk, ALL)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina,
penis, NHLextr, otleuk, otheracuteleuk, ALL)
prim_site_text <- data_frame(PRIMARY_SITE = c(
#NHL sites
"C000",
"C001",
"C002",
"C003",
"C004",
"C005",
"C006",
"C008",
"C009",
"C019",
"C020",
"C021",
"C022",
"C023",
"C024",
"C028",
"C029",
"C030",
"C031",
"C039",
"C040",
"C041",
"C048",
"C049",
"C050",
"C051",
"C052",
"C058",
"C059",
"C060",
"C061",
"C062",
"C068",
"C069",
"C079",
"C098",
"C099",
"C111",
"C142",
"C300",
"C379",
"C420",
"C422",
"C424",
#skin/melanoma
"C440", "C441", "C442", "C443", "C444", "C445",
"C446", "C447", "C448", "C449",
#breast - nipple
"C500",
#vagina/vulva
"C510", "C511", "C512", "C518", "C519", "C529",
#penis
"C600", "C601", "C602", "C608", "C609", "C639",
"C770",
"C771",
"C772",
"C773",
"C774",
"C775",
"C778",
"C779"),
SITE_TEXT = c(
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip NOS",
"C01.9 Tongue: Base NOS",
"C02.0 Tongue: Dorsal NOS",
"C02.1 Tongue: Border, Tip",
"C02.2 Tongue: Ventral NOS",
"C02.3 Tongue: Anterior NOS",
"C02.4 Lingual Tonsil",
"C02.8 Tongue: Overlapping",
"C02.9 Tongue: NOS",
"C03.0 Gum: Upper",
"C03.1 Gum: Lower",
"C03.9 Gum NOS",
"C04.0 Mouth: Anterior Floor",
"C04.1 Mouth: Lateral Floor",
"C04.8 Mouth: Overlapping Floor",
"C04.9 Floor of Mouth NOS",
"C05.0 Hard Palate",
"C05.1 Soft Palate NOS",
"C05.2 Uvula",
"C05.8 Palate: Overlapping",
"C05.9 Palate NOS",
"C06.0 Cheek Mucosa",
"C06.1 Mouth: Vestibule",
"C06.2 Retromolar Area",
"C06.8 Mouth: Other Overlapping",
"C06.9 Mouth NOS",
"C07.9 Parotid Gland",
"C09.8 Tonsil: Overlapping",
"C09.9 Tonsil NOS",
"C11.1 Nasopharynx: Poster Wall",
"C14.2 Waldeyer Ring",
"C30.0 Nasal Cavity",
"C37.9 Thymus",
"C42.0 Blood",
"C42.2 Spleen",
"C42.4 Hematopoietic NOS",
#skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS",
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS",
"C77.0 Lymph Nodes: HeadFaceNeck",
"C77.1 Intrathoracic Lymph Nodes",
"C77.2 Intra-abdominal LymphNodes",
"C77.3 Lymph Nodes of axilla or arm ",
"C77.4 Lymph Nodes: Leg",
"C77.5 Pelvic Lymph Nodes",
"C77.8 Lymph Nodes: multiple region",
"C77.9 Lymph Node NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE)
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS", "RAD_REGIONAL_DOSE_CGY",
"RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS",
"DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
"RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
"Community Cancer Program" = "1",
"Comprehensive Comm Ca Program" = "2",
"Academic/Research Program" = "3",
"Integrated Network Ca Program" = "4",
"Other" = "9")) %>%
mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
"New England" = "1",
"Middle Atlantic" = "2",
"South Atlantic" = "3",
"East North Central" = "4",
"East South Central" = "5",
"West North Central" = "6",
"West South Central" = "7",
"Mountain" = "8",
"Pacific" = "9",
"out of US" = "0")) %>%
mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
"Northeast" = c("1", "2"),
"South" = c("3", "7"),
"Midwest" = c("4", "5", "6"),
"West" = c("8", "9"))) %>%
mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
mutate(SEX_F = fct_recode(SEX,
"Male" = "1",
"Female" = "2")) %>%
mutate(RACE_F = fct_collapse(RACE,
"White" = c("01"),
"Black" = c("02"),
"Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
"16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
"32", "96", "97"),
"Other/Unk" = c("03", "98", "99"))) %>%
mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
"Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"No" = c("0"),
"Unknown" = c("9"))) %>%
mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
"None" = "0",
"Private" = "1",
"Medicaid" = "2",
"Medicare" = "3",
"Other Government" = "4",
"Unknown" = "9")) %>%
mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
"Private")) %>%
mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
"Less than $38,000" = "1",
"$38,000 - $47,999" = "2",
"$48,000 - $62,999" = "3",
"$63,000 +" = "4")) %>%
mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
"21% or more" = "1",
"13 - 20.9%" = "2",
"7 - 12.9%" = "3",
"Less than 7%" = "4")) %>%
mutate(U_R_F = fct_collapse(UR_CD_13,
"Metro" = c("1", "2", "3"),
"Urban" = c("4", "5", "6", "7"),
"Rural" = c("8", "9"))) %>%
mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
All_Part_Prim = c("10", "11", "12", "13",
"14", "20", "21", "22"),
Other_Facility = c("00"))) %>%
mutate(GRADE_F = fct_recode(GRADE,
"Gr I: Well Diff" = "1",
"Gr II: Mod Diff" = "2",
"Gr III: Poor Diff" = "3",
"Gr IV: Undiff/Anaplastic" = "4",
"NA/Unkown" = "9")) %>%
mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
"N_A" = "88")) %>%
mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
"1")) %>%
mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
"N_A" = "88")) %>%
mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
"1")) %>%
mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
"N_A" = "88")) %>%
mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
"N_A" = "88")) %>%
mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
"No Residual" = "0",
"Residual, NOS" = "1",
"Microscopic Resid" = "2",
"Macroscopic Resid" = "3",
"Not evaluable" = "7",
"No surg" = "8",
"Unknown" = "9")) %>%
mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
"Yes" = c("1", "2", "3"),
"No" = c("0"),
"No surg/Unk/NA" = c("7", "8", "9"))) %>%
mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
"No_Surg_or_No_Readmit" = "0",
"Unplan_Readmit_Same" = "1",
"Plan_Readmit_Same" = "2",
"PlanUnplan_Same" = "3",
"Unknown" = "4")) %>%
mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
"None" = "0",
"Beam Radiation" = "1",
"Radioactive Implants" = "2",
"Radioisotopes" = "3",
"Beam + Imp or Isotopes" = "4",
"Radiation, NOS" = "5",
"Unknown" = "9")) %>%
mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
"Alive_30" = "0",
"Dead_30" = "1",
"Unknown" = "9")) %>%
mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
"Alive_90" = "0",
"Dead_90" = "1",
"Unknown" = "9")) %>%
mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
"Neg_LymphVasc_Inv" = "0",
"Pos_LumphVasc_Inv" = "1",
"N_A" = "8",
"Unknown" = "9")) %>%
mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
"No_Surg" = "0",
"Robot_Assist" = "1",
"Robot_to_Open" = "2",
"Endo_Lap" = "3",
"Endo_Lap_to_Open" = "4",
"Open_Unknown" = "5",
"Unknown" = "9")) %>%
mutate(All = "All") %>%
mutate(All = factor(All)) %>%
mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
"Surg performed" = "0",
"Surg not recommended" = "1",
"No surg due to pt factors" = "2",
"No surg, pt died" = "5",
"Surg rec, not done" = "6",
"Surg rec, pt refused" = "7",
"Surg rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
"Yes",
ifelse(REASON_FOR_NO_SURGERY == "9",
"Ukn",
"No"))) %>%
mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
SURGERY_YN == "No" ~ FALSE,
TRUE ~ NA)) %>%
mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
"Rad performed" = "0",
"Rad not recommended" = "1",
"No Rad due to pt factors" = "2",
"No Rad, pt died" = "5",
"Rad rec, not done" = "6",
"Rad rec, pt refused" = "7",
"Rad rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
"Yes",
ifelse(REASON_FOR_NO_RADIATION == "9",
NA,
"No"))) %>%
mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
"None or Surg or Rad" = "0",
"Rad before Surg" = "2",
"Surg before Rad" = "3",
"Rad before and after Surg" = "4",
"Intraop Rad" = "5",
"Intraop Rad plus other" = "6",
"Unknown" = "9")) %>%
mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Surg Alone",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Rad Alone",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
"No Treatment",
ifelse(RX_SUMM_SURGRAD_SEQ == "2",
"Rad then Surg",
ifelse(RX_SUMM_SURGRAD_SEQ == "3",
"Surg then Rad",
ifelse(RX_SUMM_SURGRAD_SEQ == "4",
"Rad before and after Surg",
"Other"))))))) %>%
mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
"Surg Alone",
"Surg then Rad",
"Rad Alone")) %>%
mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01", "02", "03"),
"Ukn" = c("88", "99"))) %>%
mutate(IMMUNO_YN = fct_collapse(RX_SUMM_IMMUNOTHERAPY,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01"),
"Ukn" = c("88", "99"))) %>%
mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Surg, No rad, No Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Rad, No Surg, No Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"No Surg, No Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
"Rad then Surg, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
"Surg then Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
"Rad before and after Surg, No Chemo",
ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Surg, No rad, Yes Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Rad, No Surg, Yes Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"No Surg, No Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
"Rad then Surg, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
"Surg then Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
"Rad before and after Surg, Yes Chemo",
"Other"))))))))))))) %>%
mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
mutate(T_SIZE = ifelse(T_SIZE == 0,
"No Tumor",
ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
"< 1 cm",
ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
"1-2 cm",
ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
"2-3 cm",
ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
"3-4 cm",
ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
"4-5 cm",
ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
"5-6 cm",
ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
T_SIZE == 980 | T_SIZE == 989 |
T_SIZE == 997,
">6 cm",
ifelse(T_SIZE == 988 | T_SIZE == 999,
"NA_unk",
"Microscopic focus")))))))))) %>%
mutate(T_SIZE = factor(T_SIZE)) %>%
mutate(T_SIZE = fct_relevel(T_SIZE,
"No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
"4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
CS_METS_DX_BONE == "1" ~ "Bone",
CS_METS_DX_BRAIN == "1" ~ "Brain",
CS_METS_DX_LIVER == "1" ~ "Liver",
TRUE ~ "None/Other/Unk/NA")) %>%
mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
"Non-Expansion State" = "0",
"Jan 2014 Expansion States" = "1",
"Early Expansion States (2010-13)" = "2",
"Late Expansion States (> Jan 2014)" = "3",
"Suppressed for Ages 0 - 39" = "9")) %>%
mutate(EXPN_GROUP = case_when(MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in%
c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013")) %>%
mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>%
mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No" &
IMMUNO_YN == "No", FALSE,
ifelse(CHEMO_YN == "Ukn", NA,
TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
"HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
"CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
"BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
"MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
mutate_at(fact_vars_2, funs(factor(.)))
Table of variables for all cases:
data <- data %>% droplevels()
p_table(data,
vars = c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "FACILITY_GEOGRAPHY", "AGE", "AGE_F", "AGE_40",
"SEX_F", "RACE_F", "HISPANIC", "INSURANCE_F",
"INCOME_F", "EDUCATION_F", "U_R_F", "CROWFLY", "CDCC_TOTAL_BEST",
"SITE_TEXT", "HISTOLOGY", "BEHAVIOR", "GRADE_F",
"DX_STAGING_PROC_DAYS", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "MARGINS", "MARGINS_YN", "SURG_DISCHARGE_DAYS",
"READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "DX_LASTCONTACT_DEATH_MONTHS",
"LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "SURG_RAD_SEQ",
"SURG_RAD_SEQ_C", "SURGERY_YN", "RADIATION_YN", "CHEMO_YN", "IMMUNO_YN", "Tx_YN", "mets_at_dx",
"MEDICAID_EXPN_CODE", "EXPN_GROUP", "YEAR_OF_DIAGNOSIS"))
| n |
|
87 |
| FACILITY_TYPE_F (%) |
Comprehensive Comm Ca Program |
12 ( 13.8) |
|
Academic/Research Program |
35 ( 40.2) |
|
Integrated Network Ca Program |
7 ( 8.0) |
|
NA |
33 ( 37.9) |
| FACILITY_LOCATION_F (%) |
New England |
7 ( 8.0) |
|
Middle Atlantic |
11 ( 12.6) |
|
South Atlantic |
11 ( 12.6) |
|
East North Central |
8 ( 9.2) |
|
East South Central |
3 ( 3.4) |
|
West North Central |
5 ( 5.7) |
|
West South Central |
3 ( 3.4) |
|
Mountain |
2 ( 2.3) |
|
Pacific |
4 ( 4.6) |
|
NA |
33 ( 37.9) |
| FACILITY_GEOGRAPHY (%) |
Northeast |
18 ( 20.7) |
|
South |
14 ( 16.1) |
|
Midwest |
16 ( 18.4) |
|
West |
6 ( 6.9) |
|
NA |
33 ( 37.9) |
| AGE (mean (sd)) |
|
45.16 (18.85) |
| AGE_F (%) |
(0,54] |
57 ( 65.5) |
|
(54,64] |
20 ( 23.0) |
|
(64,74] |
3 ( 3.4) |
|
(74,100] |
7 ( 8.0) |
| AGE_40 (%) |
(0,40] |
34 ( 39.1) |
|
(40,100] |
53 ( 60.9) |
| SEX_F (%) |
Male |
33 ( 37.9) |
|
Female |
54 ( 62.1) |
| RACE_F (%) |
White |
50 ( 57.5) |
|
Black |
27 ( 31.0) |
|
Other/Unk |
2 ( 2.3) |
|
Asian |
8 ( 9.2) |
| HISPANIC (%) |
No |
78 ( 89.7) |
|
Yes |
6 ( 6.9) |
|
Unknown |
3 ( 3.4) |
| INSURANCE_F (%) |
Private |
52 ( 59.8) |
|
None |
2 ( 2.3) |
|
Medicaid |
11 ( 12.6) |
|
Medicare |
19 ( 21.8) |
|
Other Government |
1 ( 1.1) |
|
Unknown |
2 ( 2.3) |
| INCOME_F (%) |
Less than $38,000 |
16 ( 18.4) |
|
$38,000 - $47,999 |
15 ( 17.2) |
|
$48,000 - $62,999 |
28 ( 32.2) |
|
$63,000 + |
28 ( 32.2) |
| EDUCATION_F (%) |
21% or more |
14 ( 16.1) |
|
13 - 20.9% |
27 ( 31.0) |
|
7 - 12.9% |
22 ( 25.3) |
|
Less than 7% |
24 ( 27.6) |
| U_R_F (%) |
Metro |
73 ( 83.9) |
|
Urban |
11 ( 12.6) |
|
NA |
3 ( 3.4) |
| CROWFLY (mean (sd)) |
|
42.29 (107.00) |
| CDCC_TOTAL_BEST (%) |
0 |
71 ( 81.6) |
|
1 |
14 ( 16.1) |
|
2 |
1 ( 1.1) |
|
3 |
1 ( 1.1) |
| SITE_TEXT (%) |
C44.3 Skin of ear and unspecified parts of face |
5 ( 5.7) |
|
C44.5 Skin of trunk |
12 ( 13.8) |
|
C44.6 Skin of upper limb and shoulder |
8 ( 9.2) |
|
C44.7 Skin of lower limb and hip |
17 ( 19.5) |
|
C44.8 Overlapping lesion of skin |
6 ( 6.9) |
|
C44.9 Skin, NOS |
39 ( 44.8) |
| HISTOLOGY (%) |
9708 |
87 (100.0) |
| BEHAVIOR (%) |
3 |
87 (100.0) |
| GRADE_F (%) |
5 |
79 ( 90.8) |
|
NA/Unkown |
8 ( 9.2) |
| DX_STAGING_PROC_DAYS (mean (sd)) |
|
3.60 (13.59) |
| TNM_CLIN_T (%) |
N_A |
86 ( 98.9) |
|
NA |
1 ( 1.1) |
| TNM_CLIN_N (%) |
N_A |
86 ( 98.9) |
|
NA |
1 ( 1.1) |
| TNM_CLIN_M (%) |
N_A |
86 ( 98.9) |
|
NA |
1 ( 1.1) |
| TNM_CLIN_STAGE_GROUP (%) |
1 |
12 ( 13.8) |
|
1A |
14 ( 16.1) |
|
1B |
3 ( 3.4) |
|
2 |
7 ( 8.0) |
|
2A |
5 ( 5.7) |
|
3 |
3 ( 3.4) |
|
3A |
1 ( 1.1) |
|
3B |
2 ( 2.3) |
|
4 |
12 ( 13.8) |
|
4A |
7 ( 8.0) |
|
4B |
9 ( 10.3) |
|
99 |
12 ( 13.8) |
| TNM_PATH_T (%) |
N_A |
86 ( 98.9) |
|
NA |
1 ( 1.1) |
| TNM_PATH_N (%) |
N_A |
86 ( 98.9) |
|
NA |
1 ( 1.1) |
| TNM_PATH_M (%) |
N_A |
84 ( 96.6) |
|
NA |
3 ( 3.4) |
| TNM_PATH_STAGE_GROUP (%) |
1 |
3 ( 3.4) |
|
1A |
4 ( 4.6) |
|
1B |
2 ( 2.3) |
|
2 |
2 ( 2.3) |
|
2A |
1 ( 1.1) |
|
3 |
1 ( 1.1) |
|
3A |
1 ( 1.1) |
|
3B |
1 ( 1.1) |
|
4 |
4 ( 4.6) |
|
4A |
1 ( 1.1) |
|
4B |
3 ( 3.4) |
|
99 |
62 ( 71.3) |
|
NA |
2 ( 2.3) |
| DX_RX_STARTED_DAYS (mean (sd)) |
|
42.78 (50.20) |
| DX_SURG_STARTED_DAYS (mean (sd)) |
|
3.40 (10.30) |
| DX_DEFSURG_STARTED_DAYS (mean (sd)) |
|
3.40 (10.30) |
| MARGINS (%) |
No Residual |
4 ( 4.6) |
|
Residual, NOS |
1 ( 1.1) |
|
Microscopic Resid |
1 ( 1.1) |
|
Macroscopic Resid |
1 ( 1.1) |
|
Not evaluable |
5 ( 5.7) |
|
No surg |
66 ( 75.9) |
|
Unknown |
9 ( 10.3) |
| MARGINS_YN (%) |
No |
4 ( 4.6) |
|
Yes |
3 ( 3.4) |
|
No surg/Unk/NA |
80 ( 92.0) |
| SURG_DISCHARGE_DAYS (mean (sd)) |
|
1.94 (5.51) |
| READM_HOSP_30_DAYS_F (%) |
No_Surg_or_No_Readmit |
84 ( 96.6) |
|
9 |
3 ( 3.4) |
| RX_SUMM_RADIATION_F (%) |
None |
76 ( 87.4) |
|
Beam Radiation |
10 ( 11.5) |
|
Unknown |
1 ( 1.1) |
| PUF_30_DAY_MORT_CD_F (%) |
Alive_30 |
19 ( 21.8) |
|
Dead_30 |
1 ( 1.1) |
|
NA |
67 ( 77.0) |
| PUF_90_DAY_MORT_CD_F (%) |
Alive_90 |
19 ( 21.8) |
|
Dead_90 |
1 ( 1.1) |
|
NA |
67 ( 77.0) |
| DX_LASTCONTACT_DEATH_MONTHS (mean (sd)) |
|
63.33 (48.86) |
| LYMPH_VASCULAR_INVASION_F (%) |
N_A |
24 ( 27.6) |
|
NA |
63 ( 72.4) |
| RX_HOSP_SURG_APPR_2010_F (%) |
No_Surg |
20 ( 23.0) |
|
Open_Unknown |
4 ( 4.6) |
|
NA |
63 ( 72.4) |
| SURG_RAD_SEQ (%) |
Surg Alone |
19 ( 21.8) |
|
Surg then Rad |
1 ( 1.1) |
|
Rad Alone |
9 ( 10.3) |
|
No Treatment |
55 ( 63.2) |
|
Other |
3 ( 3.4) |
| SURG_RAD_SEQ_C (%) |
Surg, No rad, No Chemo |
8 ( 9.2) |
|
Surg then Rad, Yes Chemo |
1 ( 1.1) |
|
Surg, No rad, Yes Chemo |
9 ( 10.3) |
|
No Surg, No Rad, Yes Chemo |
40 ( 46.0) |
|
No Surg, No Rad, No Chemo |
15 ( 17.2) |
|
Other |
5 ( 5.7) |
|
Rad, No Surg, Yes Chemo |
3 ( 3.4) |
|
Rad, No Surg, No Chemo |
6 ( 6.9) |
| SURGERY_YN (%) |
No |
65 ( 74.7) |
|
Ukn |
2 ( 2.3) |
|
Yes |
20 ( 23.0) |
| RADIATION_YN (%) |
No |
76 ( 87.4) |
|
Yes |
10 ( 11.5) |
|
NA |
1 ( 1.1) |
| CHEMO_YN (%) |
No |
29 ( 33.3) |
|
Yes |
55 ( 63.2) |
|
Ukn |
3 ( 3.4) |
| IMMUNO_YN (%) |
No |
79 ( 90.8) |
|
Yes |
8 ( 9.2) |
| Tx_YN (%) |
FALSE |
14 ( 16.1) |
|
TRUE |
70 ( 80.5) |
|
NA |
3 ( 3.4) |
| mets_at_dx (%) |
None/Other/Unk/NA |
87 (100.0) |
| MEDICAID_EXPN_CODE (%) |
Non-Expansion State |
20 ( 23.0) |
|
Jan 2014 Expansion States |
16 ( 18.4) |
|
Early Expansion States (2010-13) |
14 ( 16.1) |
|
Late Expansion States (> Jan 2014) |
4 ( 4.6) |
|
Suppressed for Ages 0 - 39 |
33 ( 37.9) |
| EXPN_GROUP (%) |
Exclude |
33 ( 37.9) |
|
Post-Expansion |
4 ( 4.6) |
|
Pre-Expansion |
50 ( 57.5) |
| YEAR_OF_DIAGNOSIS (%) |
2004 |
9 ( 10.3) |
|
2005 |
12 ( 13.8) |
|
2006 |
8 ( 9.2) |
|
2007 |
11 ( 12.6) |
|
2008 |
15 ( 17.2) |
|
2009 |
8 ( 9.2) |
|
2010 |
9 ( 10.3) |
|
2011 |
6 ( 6.9) |
|
2013 |
1 ( 1.1) |
|
2015 |
8 ( 9.2) |
preExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion" & INSURANCE_F == "Medicare"))
postExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion" & INSURANCE_F == "Medicare"))
# p = 0.25 when comparing change in proportion of patients with Medicare before and after ACA expansion
prop.test(c(preExpMedicare, postExpMedicare),
c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
Chi-squared approximation may be incorrect
2-sample test for equality of proportions with continuity correction
data: c(preExpMedicare, postExpMedicare) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpMedicare, postExpMedicare) out of filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 0.072544, df = 1, p-value = 0.7877
alternative hypothesis: two.sided
95 percent confidence interval:
-0.841187 0.441187
sample estimates:
prop 1 prop 2
0.3 0.5
preExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion") %>%
filter(INSURANCE_F == "None"))
postExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion") %>%
filter(INSURANCE_F == "None"))
# Significant decrease in the overall proportion of patients without insurance after ACA expansion
prop.test(c(preExpNoInsurance, postExpNoInsurance),
c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
Chi-squared approximation may be incorrect
2-sample test for equality of proportions with continuity correction
data: c(preExpNoInsurance, postExpNoInsurance) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpNoInsurance, postExpNoInsurance) out of filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 1.0712e-31, df = 1, p-value = 1
alternative hypothesis: two.sided
95 percent confidence interval:
-0.03880531 0.07880531
sample estimates:
prop 1 prop 2
0.02 0.00
p_table(no_Excludes, strata = "EXPN_GROUP", vars = "DX_RX_STARTED_DAYS")
| n |
|
248 |
1137 |
|
|
| DX_RX_STARTED_DAYS (mean (sd)) |
|
48.96 (44.78) |
48.91 (143.60) |
0.996 |
|
data <- data %>% mutate(Insured = INSURANCE_F != "Unknown")
Kaplan Meier Analysis
All
uni_var(test_var = "All", data_imp = data)
_________________________________________________
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
n events median 0.95LCL 0.95UCL
87 23 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 69 7 0.915 0.0308 0.856 0.977
24 55 12 0.753 0.0495 0.662 0.856
36 52 1 0.738 0.0506 0.646 0.844
48 48 1 0.724 0.0517 0.629 0.832
60 47 0 0.724 0.0517 0.629 0.832
120 14 2 0.688 0.0550 0.588 0.804
## Univariable Cox Proportional Hazard Model for: All
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: All



Facility Type
uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
33 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Comprehensive Comm Ca Program 12 4 NA 20.9 NA
FACILITY_TYPE_F=Academic/Research Program 35 13 NA 30.1 NA
FACILITY_TYPE_F=Integrated Network Ca Program 7 3 NA 21.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
33 observations deleted due to missingness
FACILITY_TYPE_F=Comprehensive Comm Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.917 0.0798 0.773 1
24 7 2 0.722 0.1380 0.496 1
36 7 0 0.722 0.1380 0.496 1
48 7 0 0.722 0.1380 0.496 1
60 7 0 0.722 0.1380 0.496 1
120 1 1 0.602 0.1590 0.358 1
FACILITY_TYPE_F=Academic/Research Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 27 5 0.848 0.0628 0.733 0.980
24 20 6 0.658 0.0840 0.512 0.845
36 19 1 0.625 0.0860 0.477 0.818
48 17 1 0.592 0.0875 0.443 0.791
60 16 0 0.592 0.0875 0.443 0.791
120 7 0 0.592 0.0875 0.443 0.791
FACILITY_TYPE_F=Integrated Network Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 0 1.000 0.000 1.000 1
24 4 3 0.571 0.187 0.301 1
36 4 0 0.571 0.187 0.301 1
48 4 0 0.571 0.187 0.301 1
60 4 0 0.571 0.187 0.301 1
120 1 0 0.571 0.187 0.301 1
## Univariable Cox Proportional Hazard Model for: FACILITY_TYPE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
n= 54, number of events= 20
(33 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_TYPE_FAcademic/Research Program 0.16823 1.18321 0.57234 0.294 0.769
FACILITY_TYPE_FIntegrated Network Ca Program 0.07261 1.07532 0.76489 0.095 0.924
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FAcademic/Research Program 1.183 0.8452 0.3854 3.633
FACILITY_TYPE_FIntegrated Network Ca Program 1.075 0.9300 0.2401 4.815
Concordance= 0.533 (se = 0.058 )
Rsquare= 0.002 (max possible= 0.933 )
Likelihood ratio test= 0.1 on 2 df, p=0.953
Wald test = 0.09 on 2 df, p=0.9539
Score (logrank) test = 0.09 on 2 df, p=0.9538
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_TYPE_F



Facility Location
uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
33 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England 7 4 30.1 15.38 NA
FACILITY_LOCATION_F=Middle Atlantic 11 3 NA 20.86 NA
FACILITY_LOCATION_F=South Atlantic 11 3 NA 12.02 NA
FACILITY_LOCATION_F=East North Central 8 3 NA 6.05 NA
FACILITY_LOCATION_F=East South Central 3 0 NA NA NA
FACILITY_LOCATION_F=West North Central 5 3 80.0 41.26 NA
FACILITY_LOCATION_F=West South Central 3 2 21.1 1.05 NA
FACILITY_LOCATION_F=Mountain 2 2 15.7 12.39 NA
FACILITY_LOCATION_F=Pacific 4 0 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
33 observations deleted due to missingness
FACILITY_LOCATION_F=New England
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.857 0.132 0.633 1
24 4 2 0.571 0.187 0.301 1
36 3 1 0.429 0.187 0.182 1
48 3 0 0.429 0.187 0.182 1
60 2 0 0.429 0.187 0.182 1
FACILITY_LOCATION_F=Middle Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 0 1.000 0.000 1.000 1
24 6 3 0.686 0.151 0.445 1
36 6 0 0.686 0.151 0.445 1
48 5 0 0.686 0.151 0.445 1
60 5 0 0.686 0.151 0.445 1
120 2 0 0.686 0.151 0.445 1
FACILITY_LOCATION_F=South Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 2 0.787 0.134 0.564 1
24 6 1 0.675 0.155 0.430 1
36 6 0 0.675 0.155 0.430 1
48 6 0 0.675 0.155 0.430 1
60 6 0 0.675 0.155 0.430 1
120 3 0 0.675 0.155 0.430 1
FACILITY_LOCATION_F=East North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 2 0.714 0.171 0.447 1
24 4 1 0.571 0.187 0.301 1
36 4 0 0.571 0.187 0.301 1
48 4 0 0.571 0.187 0.301 1
60 4 0 0.571 0.187 0.301 1
120 2 0 0.571 0.187 0.301 1
FACILITY_LOCATION_F=East South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
120 1 0 1 0 1 1
FACILITY_LOCATION_F=West North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 0 1.0 0.000 1.000 1
24 4 1 0.8 0.179 0.516 1
36 4 0 0.8 0.179 0.516 1
48 3 1 0.6 0.219 0.293 1
60 3 0 0.6 0.219 0.293 1
FACILITY_LOCATION_F=West South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.2995 1
24 1 1 0.333 0.272 0.0673 1
36 1 0 0.333 0.272 0.0673 1
48 1 0 0.333 0.272 0.0673 1
60 1 0 0.333 0.272 0.0673 1
120 1 0 0.333 0.272 0.0673 1
FACILITY_LOCATION_F=Mountain
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
FACILITY_LOCATION_F=Pacific
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1 0 1 1
24 4 0 1 0 1 1
36 4 0 1 0 1 1
48 4 0 1 0 1 1
60 4 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: FACILITY_LOCATION_F
Loglik converged before variable 4,8 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
n= 54, number of events= 20
(33 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic -7.740e-01 4.612e-01 7.649e-01 -1.012 0.312
FACILITY_LOCATION_FSouth Atlantic -6.579e-01 5.179e-01 7.681e-01 -0.856 0.392
FACILITY_LOCATION_FEast North Central -3.185e-01 7.272e-01 7.656e-01 -0.416 0.677
FACILITY_LOCATION_FEast South Central -1.899e+01 5.641e-09 9.584e+03 -0.002 0.998
FACILITY_LOCATION_FWest North Central -1.839e-01 8.320e-01 7.661e-01 -0.240 0.810
FACILITY_LOCATION_FWest South Central 3.347e-01 1.398e+00 8.685e-01 0.385 0.700
FACILITY_LOCATION_FMountain 1.078e+00 2.940e+00 8.886e-01 1.214 0.225
FACILITY_LOCATION_FPacific -1.897e+01 5.768e-09 7.359e+03 -0.003 0.998
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic 4.612e-01 2.168e+00 0.1030 2.065
FACILITY_LOCATION_FSouth Atlantic 5.179e-01 1.931e+00 0.1149 2.334
FACILITY_LOCATION_FEast North Central 7.272e-01 1.375e+00 0.1622 3.261
FACILITY_LOCATION_FEast South Central 5.641e-09 1.773e+08 0.0000 Inf
FACILITY_LOCATION_FWest North Central 8.320e-01 1.202e+00 0.1854 3.735
FACILITY_LOCATION_FWest South Central 1.398e+00 7.156e-01 0.2548 7.666
FACILITY_LOCATION_FMountain 2.940e+00 3.401e-01 0.5152 16.777
FACILITY_LOCATION_FPacific 5.768e-09 1.734e+08 0.0000 Inf
Concordance= 0.69 (se = 0.067 )
Rsquare= 0.196 (max possible= 0.933 )
Likelihood ratio test= 11.78 on 8 df, p=0.1613
Wald test = 5.37 on 8 df, p=0.7171
Score (logrank) test = 11.23 on 8 df, p=0.1891
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_LOCATION_F



Facility Geography
uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
33 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 18 7 NA 23.7 NA
FACILITY_GEOGRAPHY=South 14 5 NA 12.0 NA
FACILITY_GEOGRAPHY=Midwest 16 6 NA 41.3 NA
FACILITY_GEOGRAPHY=West 6 2 NA 19.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
33 observations deleted due to missingness
FACILITY_GEOGRAPHY=Northeast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 16 1 0.944 0.054 0.844 1.000
24 10 5 0.639 0.119 0.445 0.920
36 9 1 0.576 0.123 0.379 0.874
48 8 0 0.576 0.123 0.379 0.874
60 7 0 0.576 0.123 0.379 0.874
120 2 0 0.576 0.123 0.379 0.874
FACILITY_GEOGRAPHY=South
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 3 0.766 0.119 0.565 1.000
24 7 2 0.596 0.141 0.375 0.947
36 7 0 0.596 0.141 0.375 0.947
48 7 0 0.596 0.141 0.375 0.947
60 7 0 0.596 0.141 0.375 0.947
120 4 0 0.596 0.141 0.375 0.947
FACILITY_GEOGRAPHY=Midwest
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 2 0.867 0.0878 0.711 1.000
24 10 2 0.722 0.1185 0.524 0.996
36 10 0 0.722 0.1185 0.524 0.996
48 9 1 0.650 0.1268 0.444 0.953
60 9 0 0.650 0.1268 0.444 0.953
120 3 1 0.569 0.1345 0.358 0.904
FACILITY_GEOGRAPHY=West
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 0 1.000 0.000 1.000 1
24 4 2 0.667 0.192 0.379 1
36 4 0 0.667 0.192 0.379 1
48 4 0 0.667 0.192 0.379 1
60 4 0 0.667 0.192 0.379 1
## Univariable Cox Proportional Hazard Model for: FACILITY_GEOGRAPHY
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
n= 54, number of events= 20
(33 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_GEOGRAPHYSouth 0.04767 1.04883 0.58834 0.081 0.935
FACILITY_GEOGRAPHYMidwest -0.05898 0.94272 0.55797 -0.106 0.916
FACILITY_GEOGRAPHYWest -0.25357 0.77602 0.80203 -0.316 0.752
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth 1.0488 0.9534 0.3311 3.323
FACILITY_GEOGRAPHYMidwest 0.9427 1.0608 0.3158 2.814
FACILITY_GEOGRAPHYWest 0.7760 1.2886 0.1611 3.737
Concordance= 0.537 (se = 0.065 )
Rsquare= 0.003 (max possible= 0.933 )
Likelihood ratio test= 0.15 on 3 df, p=0.9855
Wald test = 0.14 on 3 df, p=0.9865
Score (logrank) test = 0.14 on 3 df, p=0.9864
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_GEOGRAPHY



Age Group
uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n events median 0.95LCL 0.95UCL
AGE_F=(0,54] 57 11 NA NA NA
AGE_F=(54,64] 20 9 80 20.86 NA
AGE_F=(64,74] 3 1 NA 7.26 NA
AGE_F=(74,100] 7 2 NA 30.09 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
AGE_F=(0,54]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 48 2 0.963 0.0259 0.913 1.000
24 40 7 0.819 0.0546 0.719 0.934
36 38 0 0.819 0.0546 0.719 0.934
48 35 1 0.796 0.0577 0.691 0.918
60 34 0 0.796 0.0577 0.691 0.918
120 10 1 0.771 0.0613 0.660 0.901
AGE_F=(54,64]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 4 0.794 0.0919 0.633 0.996
24 9 4 0.553 0.1195 0.362 0.845
36 9 0 0.553 0.1195 0.362 0.845
48 8 0 0.553 0.1195 0.362 0.845
60 8 0 0.553 0.1195 0.362 0.845
120 3 1 0.461 0.1304 0.265 0.802
AGE_F=(64,74]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.3 1
24 2 0 0.667 0.272 0.3 1
36 2 0 0.667 0.272 0.3 1
48 2 0 0.667 0.272 0.3 1
60 2 0 0.667 0.272 0.3 1
120 1 0 0.667 0.272 0.3 1
AGE_F=(74,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 0 1.0 0.000 1.000 1
24 4 1 0.8 0.179 0.516 1
36 3 1 0.6 0.219 0.293 1
48 3 0 0.6 0.219 0.293 1
60 3 0 0.6 0.219 0.293 1
## Univariable Cox Proportional Hazard Model for: AGE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
AGE_F(54,64] 1.0825 2.9521 0.4500 2.405 0.0162 *
AGE_F(64,74] 0.5848 1.7946 1.0450 0.560 0.5758
AGE_F(74,100] 0.6376 1.8919 0.7690 0.829 0.4070
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64] 2.952 0.3387 1.2220 7.132
AGE_F(64,74] 1.795 0.5572 0.2314 13.916
AGE_F(74,100] 1.892 0.5286 0.4192 8.540
Concordance= 0.632 (se = 0.05 )
Rsquare= 0.062 (max possible= 0.888 )
Likelihood ratio test= 5.52 on 3 df, p=0.1373
Wald test = 5.84 on 3 df, p=0.1199
Score (logrank) test = 6.37 on 3 df, p=0.09509
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_F



Age Group
uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n events median 0.95LCL 0.95UCL
AGE_40=(0,40] 34 3 NA NA NA
AGE_40=(40,100] 53 20 NA 41.3 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
AGE_40=(0,40]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 1 0.968 0.0317 0.908 1
24 25 1 0.931 0.0476 0.842 1
36 23 0 0.931 0.0476 0.842 1
48 21 0 0.931 0.0476 0.842 1
60 21 0 0.931 0.0476 0.842 1
120 5 1 0.884 0.0640 0.767 1
AGE_40=(40,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 43 6 0.881 0.0456 0.796 0.975
24 30 11 0.649 0.0690 0.527 0.799
36 29 1 0.627 0.0700 0.504 0.780
48 27 1 0.606 0.0708 0.481 0.762
60 26 0 0.606 0.0708 0.481 0.762
120 9 1 0.575 0.0735 0.448 0.739
## Univariable Cox Proportional Hazard Model for: AGE_40
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
AGE_40(40,100] 1.5629 4.7725 0.6195 2.523 0.0116 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100] 4.772 0.2095 1.417 16.07
Concordance= 0.649 (se = 0.053 )
Rsquare= 0.098 (max possible= 0.888 )
Likelihood ratio test= 9.01 on 1 df, p=0.002687
Wald test = 6.36 on 1 df, p=0.01165
Score (logrank) test = 7.76 on 1 df, p=0.005337
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_40



Gender
uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n events median 0.95LCL 0.95UCL
SEX_F=Male 33 11 NA 67.1 NA
SEX_F=Female 54 12 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
SEX_F=Male
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 4 0.869 0.0615 0.756 0.998
24 18 5 0.680 0.0889 0.526 0.878
36 17 0 0.680 0.0889 0.526 0.878
48 17 0 0.680 0.0889 0.526 0.878
60 17 0 0.680 0.0889 0.526 0.878
120 2 2 0.588 0.0979 0.425 0.815
SEX_F=Female
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 46 3 0.941 0.0329 0.879 1.000
24 37 7 0.794 0.0582 0.688 0.917
36 35 1 0.772 0.0606 0.662 0.900
48 31 1 0.749 0.0631 0.635 0.883
60 30 0 0.749 0.0631 0.635 0.883
120 12 0 0.749 0.0631 0.635 0.883
## Univariable Cox Proportional Hazard Model for: SEX_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
SEX_FFemale -0.5634 0.5693 0.4178 -1.349 0.177
exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale 0.5693 1.757 0.251 1.291
Concordance= 0.569 (se = 0.051 )
Rsquare= 0.02 (max possible= 0.888 )
Likelihood ratio test= 1.78 on 1 df, p=0.182
Wald test = 1.82 on 1 df, p=0.1775
Score (logrank) test = 1.87 on 1 df, p=0.1718
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SEX_F



RACE_F
uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n events median 0.95LCL 0.95UCL
RACE_F=White 50 18 NA 41.3 NA
RACE_F=Black 27 4 NA NA NA
RACE_F=Other/Unk 2 0 NA NA NA
RACE_F=Asian 8 1 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
RACE_F=White
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 39 5 0.893 0.0454 0.808 0.986
24 28 10 0.659 0.0719 0.532 0.816
36 26 1 0.634 0.0732 0.506 0.795
48 24 1 0.610 0.0744 0.480 0.775
60 24 0 0.610 0.0744 0.480 0.775
120 7 1 0.574 0.0782 0.440 0.750
RACE_F=Black
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 21 2 0.923 0.0525 0.825 1.000
24 18 2 0.833 0.0770 0.695 0.998
36 18 0 0.833 0.0770 0.695 0.998
48 17 0 0.833 0.0770 0.695 0.998
60 16 0 0.833 0.0770 0.695 0.998
120 6 0 0.833 0.0770 0.695 0.998
RACE_F=Other/Unk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
120 1 0 1 0 1 1
RACE_F=Asian
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 0 1 0 1 1
24 7 0 1 0 1 1
36 6 0 1 0 1 1
48 5 0 1 0 1 1
60 5 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: RACE_F
Loglik converged before variable 2 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
RACE_FBlack -9.797e-01 3.754e-01 5.534e-01 -1.770 0.0767 .
RACE_FOther/Unk -1.750e+01 2.514e-08 6.061e+03 -0.003 0.9977
RACE_FAsian -1.277e+00 2.789e-01 1.028e+00 -1.242 0.2141
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack 3.754e-01 2.664e+00 0.12689 1.111
RACE_FOther/Unk 2.514e-08 3.978e+07 0.00000 Inf
RACE_FAsian 2.789e-01 3.585e+00 0.03722 2.091
Concordance= 0.625 (se = 0.056 )
Rsquare= 0.073 (max possible= 0.888 )
Likelihood ratio test= 6.64 on 3 df, p=0.08426
Wald test = 4.29 on 3 df, p=0.232
Score (logrank) test = 5.64 on 3 df, p=0.1305
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RACE_F



Hispanic
uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n events median 0.95LCL 0.95UCL
HISPANIC=No 78 21 NA NA NA
HISPANIC=Yes 6 0 NA NA NA
HISPANIC=Unknown 3 2 17.3 7.26 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
HISPANIC=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 62 6 0.918 0.0320 0.858 0.983
24 49 11 0.752 0.0525 0.656 0.862
36 47 1 0.736 0.0537 0.638 0.849
48 43 1 0.720 0.0549 0.620 0.836
60 42 0 0.720 0.0549 0.620 0.836
120 13 2 0.680 0.0587 0.574 0.805
HISPANIC=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 0 1 0 1 1
24 5 0 1 0 1 1
36 4 0 1 0 1 1
48 4 0 1 0 1 1
60 4 0 1 0 1 1
HISPANIC=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.2995 1
24 1 1 0.333 0.272 0.0673 1
36 1 0 0.333 0.272 0.0673 1
48 1 0 0.333 0.272 0.0673 1
60 1 0 0.333 0.272 0.0673 1
120 1 0 0.333 0.272 0.0673 1
## Univariable Cox Proportional Hazard Model for: HISPANIC
Loglik converged before variable 1 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
HISPANICYes -1.826e+01 1.172e-08 6.805e+03 -0.003 0.998
HISPANICUnknown 1.175e+00 3.238e+00 7.430e-01 1.581 0.114
exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes 1.172e-08 8.535e+07 0.0000 Inf
HISPANICUnknown 3.238e+00 3.088e-01 0.7548 13.89
Concordance= 0.57 (se = 0.033 )
Rsquare= 0.062 (max possible= 0.888 )
Likelihood ratio test= 5.6 on 2 df, p=0.06078
Wald test = 2.5 on 2 df, p=0.2864
Score (logrank) test = 5 on 2 df, p=0.08229
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: HISPANIC



Insurance Status
uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n events median 0.95LCL 0.95UCL
INSURANCE_F=Private 52 14 NA NA NA
INSURANCE_F=None 2 1 21.1 21.1 NA
INSURANCE_F=Medicaid 11 2 NA NA NA
INSURANCE_F=Medicare 19 5 NA 30.1 NA
INSURANCE_F=Other Government 1 0 NA NA NA
INSURANCE_F=Unknown 2 1 41.3 41.3 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
INSURANCE_F=Private
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 42 5 0.900 0.0424 0.821 0.987
24 33 8 0.725 0.0653 0.608 0.865
36 32 0 0.725 0.0653 0.608 0.865
48 29 0 0.725 0.0653 0.608 0.865
60 29 0 0.725 0.0653 0.608 0.865
120 10 1 0.693 0.0696 0.570 0.844
INSURANCE_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 1 1 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
INSURANCE_F=Medicaid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 1 0.909 0.0867 0.754 1
24 8 0 0.909 0.0867 0.754 1
36 7 0 0.909 0.0867 0.754 1
48 7 0 0.909 0.0867 0.754 1
60 7 0 0.909 0.0867 0.754 1
120 2 1 0.779 0.1413 0.546 1
INSURANCE_F=Medicare
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 1 0.938 0.0605 0.826 1.000
24 11 3 0.740 0.1121 0.550 0.996
36 10 1 0.673 0.1204 0.474 0.956
48 10 0 0.673 0.1204 0.474 0.956
60 9 0 0.673 0.1204 0.474 0.956
120 1 0 0.673 0.1204 0.474 0.956
INSURANCE_F=Other Government
time n.risk n.event survival std.err lower 95% CI upper 95% CI
INSURANCE_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 2 0 1.0 0.000 1.000 1
36 2 0 1.0 0.000 1.000 1
48 1 1 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
120 1 0 0.5 0.354 0.125 1
## Univariable Cox Proportional Hazard Model for: INSURANCE_F
Loglik converged before variable 4 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
INSURANCE_FNone 4.964e-01 1.643e+00 1.036e+00 0.479 0.632
INSURANCE_FMedicaid -4.373e-01 6.458e-01 7.561e-01 -0.578 0.563
INSURANCE_FMedicare 3.281e-02 1.033e+00 5.212e-01 0.063 0.950
INSURANCE_FOther Government -1.505e+01 2.905e-07 6.158e+03 -0.002 0.998
INSURANCE_FUnknown 3.543e-01 1.425e+00 1.036e+00 0.342 0.732
exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone 1.643e+00 6.087e-01 0.2157 12.514
INSURANCE_FMedicaid 6.458e-01 1.549e+00 0.1467 2.842
INSURANCE_FMedicare 1.033e+00 9.677e-01 0.3720 2.870
INSURANCE_FOther Government 2.905e-07 3.443e+06 0.0000 Inf
INSURANCE_FUnknown 1.425e+00 7.016e-01 0.1872 10.850
Concordance= 0.531 (se = 0.055 )
Rsquare= 0.011 (max possible= 0.888 )
Likelihood ratio test= 0.95 on 5 df, p=0.9667
Wald test = 0.76 on 5 df, p=0.9796
Score (logrank) test = 0.87 on 5 df, p=0.9724
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: INSURANCE_F



Overall Survival pre/post-ACA expansion
uni_var(test_var = "EXPN_GROUP", data_imp = no_Excludes)
_________________________________________________
## EXPN_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n events median 0.95LCL 0.95UCL
EXPN_GROUP=Post-Expansion 248 36 NA 82.8 NA
EXPN_GROUP=Pre-Expansion 1137 303 142 128.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
EXPN_GROUP=Post-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 206 8 0.965 0.0121 0.942 0.989
24 144 16 0.882 0.0229 0.838 0.928
36 79 6 0.838 0.0280 0.785 0.894
48 52 3 0.797 0.0351 0.731 0.869
60 33 1 0.780 0.0384 0.708 0.859
EXPN_GROUP=Pre-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1000 41 0.962 0.00580 0.951 0.974
24 900 41 0.921 0.00835 0.905 0.938
36 799 34 0.885 0.01009 0.865 0.905
48 683 33 0.846 0.01167 0.824 0.870
60 568 44 0.789 0.01376 0.762 0.816
120 125 94 0.586 0.02213 0.545 0.631
## Univariable Cox Proportional Hazard Model for: EXPN_GROUP
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n= 1385, number of events= 339
coef exp(coef) se(coef) z Pr(>|z|)
EXPN_GROUPPre-Expansion -0.2137 0.8076 0.1815 -1.178 0.239
exp(coef) exp(-coef) lower .95 upper .95
EXPN_GROUPPre-Expansion 0.8076 1.238 0.5659 1.153
Concordance= 0.514 (se = 0.01 )
Rsquare= 0.001 (max possible= 0.958 )
Likelihood ratio test= 1.32 on 1 df, p=0.2507
Wald test = 1.39 on 1 df, p=0.239
Score (logrank) test = 1.39 on 1 df, p=0.2381
## Unadjusted Kaplan Meier Overall Survival Curve for: EXPN_GROUP



Education
uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more 14 3 NA NA NA
EDUCATION_F=13 - 20.9% 27 8 NA NA NA
EDUCATION_F=7 - 12.9% 22 2 NA NA NA
EDUCATION_F=Less than 7% 24 10 NA 41.3 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
EDUCATION_F=21% or more
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.923 0.0739 0.789 1
24 7 2 0.738 0.1309 0.522 1
36 7 0 0.738 0.1309 0.522 1
48 7 0 0.738 0.1309 0.522 1
60 7 0 0.738 0.1309 0.522 1
120 1 0 0.738 0.1309 0.522 1
EDUCATION_F=13 - 20.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 19 5 0.813 0.0754 0.678 0.975
24 15 3 0.678 0.0951 0.515 0.892
36 14 0 0.678 0.0951 0.515 0.892
48 14 0 0.678 0.0951 0.515 0.892
60 13 0 0.678 0.0951 0.515 0.892
120 4 0 0.678 0.0951 0.515 0.892
EDUCATION_F=7 - 12.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 17 1 0.955 0.0444 0.871 1
24 16 1 0.898 0.0687 0.773 1
36 15 0 0.898 0.0687 0.773 1
48 13 0 0.898 0.0687 0.773 1
60 13 0 0.898 0.0687 0.773 1
120 5 0 0.898 0.0687 0.773 1
EDUCATION_F=Less than 7%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 0 1.000 0.0000 1.000 1.000
24 17 6 0.739 0.0916 0.580 0.942
36 16 1 0.696 0.0959 0.531 0.912
48 14 1 0.649 0.1001 0.480 0.878
60 14 0 0.649 0.1001 0.480 0.878
120 4 2 0.543 0.1090 0.366 0.805
## Univariable Cox Proportional Hazard Model for: EDUCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
EDUCATION_F13 - 20.9% 0.1892 1.2083 0.6772 0.279 0.780
EDUCATION_F7 - 12.9% -1.0498 0.3500 0.9133 -1.149 0.250
EDUCATION_FLess than 7% 0.3655 1.4413 0.6588 0.555 0.579
exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9% 1.208 0.8276 0.32042 4.557
EDUCATION_F7 - 12.9% 0.350 2.8570 0.05844 2.097
EDUCATION_FLess than 7% 1.441 0.6938 0.39624 5.243
Concordance= 0.58 (se = 0.06 )
Rsquare= 0.052 (max possible= 0.888 )
Likelihood ratio test= 4.66 on 3 df, p=0.1987
Wald test = 3.41 on 3 df, p=0.332
Score (logrank) test = 3.9 on 3 df, p=0.2726
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: EDUCATION_F



Urban/Rural
uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
3 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
U_R_F=Metro 73 20 NA NA NA
U_R_F=Urban 11 3 NA 21.7 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
3 observations deleted due to missingness
U_R_F=Metro
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 58 7 0.900 0.0360 0.832 0.973
24 47 9 0.757 0.0532 0.659 0.868
36 44 1 0.740 0.0546 0.640 0.855
48 40 1 0.722 0.0561 0.620 0.841
60 40 0 0.722 0.0561 0.620 0.841
120 10 2 0.679 0.0606 0.570 0.809
U_R_F=Urban
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 0 1.000 0.000 1.00 1
24 6 3 0.667 0.157 0.42 1
36 6 0 0.667 0.157 0.42 1
48 6 0 0.667 0.157 0.42 1
60 6 0 0.667 0.157 0.42 1
120 3 0 0.667 0.157 0.42 1
## Univariable Cox Proportional Hazard Model for: U_R_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
n= 84, number of events= 23
(3 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
U_R_FUrban 0.006976 1.007000 0.619430 0.011 0.991
exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban 1.007 0.993 0.2991 3.391
Concordance= 0.499 (se = 0.036 )
Rsquare= 0 (max possible= 0.895 )
Likelihood ratio test= 0 on 1 df, p=0.991
Wald test = 0 on 1 df, p=0.991
Score (logrank) test = 0 on 1 df, p=0.991
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: U_R_F



Year
uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004 9 4 NA 20.9 NA
YEAR_OF_DIAGNOSIS=2005 12 6 30.1 18.1 NA
YEAR_OF_DIAGNOSIS=2006 8 0 NA NA NA
YEAR_OF_DIAGNOSIS=2007 11 5 NA 17.3 NA
YEAR_OF_DIAGNOSIS=2008 15 2 NA NA NA
YEAR_OF_DIAGNOSIS=2009 8 4 67.1 21.4 NA
YEAR_OF_DIAGNOSIS=2010 9 0 NA NA NA
YEAR_OF_DIAGNOSIS=2011 6 1 NA NA NA
YEAR_OF_DIAGNOSIS=2013 1 0 NA NA NA
YEAR_OF_DIAGNOSIS=2015 8 1 23.7 NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
YEAR_OF_DIAGNOSIS=2004
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 1 0.889 0.105 0.706 1.000
24 6 2 0.667 0.157 0.420 1.000
36 6 0 0.667 0.157 0.420 1.000
48 5 1 0.556 0.166 0.310 0.997
60 5 0 0.556 0.166 0.310 0.997
120 5 0 0.556 0.166 0.310 0.997
YEAR_OF_DIAGNOSIS=2005
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 2 0.833 0.108 0.647 1.000
24 7 3 0.583 0.142 0.362 0.941
36 6 1 0.500 0.144 0.284 0.880
48 6 0 0.500 0.144 0.284 0.880
60 6 0 0.500 0.144 0.284 0.880
120 3 0 0.500 0.144 0.284 0.880
YEAR_OF_DIAGNOSIS=2006
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 0 1 0 1 1
24 8 0 1 0 1 1
36 7 0 1 0 1 1
48 7 0 1 0 1 1
60 7 0 1 0 1 1
120 5 0 1 0 1 1
YEAR_OF_DIAGNOSIS=2007
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.754 1.000
24 7 3 0.636 0.1450 0.407 0.995
36 7 0 0.636 0.1450 0.407 0.995
48 7 0 0.636 0.1450 0.407 0.995
60 7 0 0.636 0.1450 0.407 0.995
120 1 1 0.530 0.1549 0.299 0.940
YEAR_OF_DIAGNOSIS=2008
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 1 0.933 0.0644 0.815 1
24 11 1 0.862 0.0911 0.700 1
36 11 0 0.862 0.0911 0.700 1
48 11 0 0.862 0.0911 0.700 1
60 10 0 0.862 0.0911 0.700 1
YEAR_OF_DIAGNOSIS=2009
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 1 0.875 0.117 0.673 1
24 5 2 0.625 0.171 0.365 1
36 4 0 0.625 0.171 0.365 1
48 3 0 0.625 0.171 0.365 1
60 3 0 0.625 0.171 0.365 1
YEAR_OF_DIAGNOSIS=2010
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 0 1 0 1 1
24 6 0 1 0 1 1
36 6 0 1 0 1 1
48 5 0 1 0 1 1
60 5 0 1 0 1 1
YEAR_OF_DIAGNOSIS=2011
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.8 0.179 0.516 1
24 4 0 0.8 0.179 0.516 1
36 4 0 0.8 0.179 0.516 1
48 4 0 0.8 0.179 0.516 1
60 4 0 0.8 0.179 0.516 1
YEAR_OF_DIAGNOSIS=2013
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
YEAR_OF_DIAGNOSIS=2015
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: YEAR_OF_DIAGNOSIS
Loglik converged before variable 2,6,8 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005 2.499e-01 1.284e+00 6.458e-01 0.387 0.699
YEAR_OF_DIAGNOSIS2006 -1.971e+01 2.744e-09 9.228e+03 -0.002 0.998
YEAR_OF_DIAGNOSIS2007 6.895e-02 1.071e+00 6.712e-01 0.103 0.918
YEAR_OF_DIAGNOSIS2008 -1.192e+00 3.037e-01 8.664e-01 -1.376 0.169
YEAR_OF_DIAGNOSIS2009 2.085e-01 1.232e+00 7.085e-01 0.294 0.769
YEAR_OF_DIAGNOSIS2010 -1.971e+01 2.748e-09 1.046e+04 -0.002 0.998
YEAR_OF_DIAGNOSIS2011 -7.466e-01 4.740e-01 1.120e+00 -0.666 0.505
YEAR_OF_DIAGNOSIS2013 -1.971e+01 2.763e-09 2.737e+04 -0.001 0.999
YEAR_OF_DIAGNOSIS2015 -2.027e-01 8.165e-01 1.132e+00 -0.179 0.858
exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005 1.284e+00 7.789e-01 0.36213 4.552
YEAR_OF_DIAGNOSIS2006 2.744e-09 3.645e+08 0.00000 Inf
YEAR_OF_DIAGNOSIS2007 1.071e+00 9.334e-01 0.28747 3.993
YEAR_OF_DIAGNOSIS2008 3.037e-01 3.293e+00 0.05559 1.659
YEAR_OF_DIAGNOSIS2009 1.232e+00 8.118e-01 0.30724 4.939
YEAR_OF_DIAGNOSIS2010 2.748e-09 3.638e+08 0.00000 Inf
YEAR_OF_DIAGNOSIS2011 4.740e-01 2.110e+00 0.05275 4.259
YEAR_OF_DIAGNOSIS2013 2.763e-09 3.620e+08 0.00000 Inf
YEAR_OF_DIAGNOSIS2015 8.165e-01 1.225e+00 0.08877 7.511
Concordance= 0.704 (se = 0.062 )
Rsquare= 0.181 (max possible= 0.888 )
Likelihood ratio test= 17.42 on 9 df, p=0.04259
Wald test = 3.99 on 9 df, p=0.9123
Score (logrank) test = 12.89 on 9 df, p=0.1676
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: YEAR_OF_DIAGNOSIS



Primary Site
uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 5 0 NA NA NA
SITE_TEXT=C44.5 Skin of trunk 12 3 NA 80.0 NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder 8 0 NA NA NA
SITE_TEXT=C44.7 Skin of lower limb and hip 17 3 NA NA NA
SITE_TEXT=C44.8 Overlapping lesion of skin 6 2 NA 19.1 NA
SITE_TEXT=C44.9 Skin, NOS 39 15 NA 23.7 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1 0 1 1
24 4 0 1 0 1 1
36 3 0 1 0 1 1
48 3 0 1 0 1 1
60 3 0 1 0 1 1
SITE_TEXT=C44.5 Skin of trunk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 1 0.917 0.0798 0.773 1
24 11 0 0.917 0.0798 0.773 1
36 11 0 0.917 0.0798 0.773 1
48 10 0 0.917 0.0798 0.773 1
60 10 0 0.917 0.0798 0.773 1
120 1 2 0.722 0.1380 0.496 1
SITE_TEXT=C44.6 Skin of upper limb and shoulder
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 0 1 0 1 1
24 6 0 1 0 1 1
36 6 0 1 0 1 1
48 6 0 1 0 1 1
60 6 0 1 0 1 1
120 2 0 1 0 1 1
SITE_TEXT=C44.7 Skin of lower limb and hip
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 0 1.000 0.000 1.000 1
24 10 2 0.839 0.104 0.657 1
36 9 1 0.755 0.123 0.549 1
48 8 0 0.755 0.123 0.549 1
60 8 0 0.755 0.123 0.549 1
120 3 0 0.755 0.123 0.549 1
SITE_TEXT=C44.8 Overlapping lesion of skin
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.800 0.179 0.516 1
24 2 1 0.533 0.248 0.214 1
36 2 0 0.533 0.248 0.214 1
48 2 0 0.533 0.248 0.214 1
60 2 0 0.533 0.248 0.214 1
120 1 0 0.533 0.248 0.214 1
SITE_TEXT=C44.9 Skin, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 31 5 0.867 0.0553 0.765 0.983
24 22 9 0.616 0.0809 0.476 0.796
36 21 0 0.616 0.0809 0.476 0.796
48 19 1 0.585 0.0825 0.444 0.771
60 18 0 0.585 0.0825 0.444 0.771
120 7 0 0.585 0.0825 0.444 0.771
## Univariable Cox Proportional Hazard Model for: SITE_TEXT
Loglik converged before variable 1,2,3,4,5 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
SITE_TEXTC44.5 Skin of trunk 1.789e+01 5.858e+07 7.338e+03 0.002 0.998
SITE_TEXTC44.6 Skin of upper limb and shoulder -2.239e-03 9.978e-01 9.410e+03 0.000 1.000
SITE_TEXTC44.7 Skin of lower limb and hip 1.784e+01 5.617e+07 7.338e+03 0.002 0.998
SITE_TEXTC44.8 Overlapping lesion of skin 1.876e+01 1.402e+08 7.338e+03 0.003 0.998
SITE_TEXTC44.9 Skin, NOS 1.859e+01 1.186e+08 7.338e+03 0.003 0.998
exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC44.5 Skin of trunk 5.858e+07 1.707e-08 0 Inf
SITE_TEXTC44.6 Skin of upper limb and shoulder 9.978e-01 1.002e+00 0 Inf
SITE_TEXTC44.7 Skin of lower limb and hip 5.617e+07 1.780e-08 0 Inf
SITE_TEXTC44.8 Overlapping lesion of skin 1.402e+08 7.133e-09 0 Inf
SITE_TEXTC44.9 Skin, NOS 1.186e+08 8.433e-09 0 Inf
Concordance= 0.665 (se = 0.059 )
Rsquare= 0.118 (max possible= 0.888 )
Likelihood ratio test= 10.88 on 5 df, p=0.05386
Wald test = 2.51 on 5 df, p=0.775
Score (logrank) test = 7.57 on 5 df, p=0.1814
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SITE_TEXT



Histology
#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)
Grade
#uni_var(test_var = "GRADE_F", data_imp = data)
Clinical T Stage
uni_var(test_var = "TNM_CLIN_T", data_imp = data)
_________________________________________________
## TNM_CLIN_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
86 23 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
1 observation deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 68 7 0.914 0.0312 0.855 0.977
24 54 12 0.749 0.0501 0.657 0.854
36 51 1 0.735 0.0511 0.641 0.842
48 47 1 0.720 0.0522 0.624 0.830
60 46 0 0.720 0.0522 0.624 0.830
120 14 2 0.683 0.0557 0.582 0.802
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_T
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_T



Clinical N Stage
uni_var(test_var = "TNM_CLIN_N", data_imp = data)
_________________________________________________
## TNM_CLIN_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
86 23 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
1 observation deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 68 7 0.914 0.0312 0.855 0.977
24 54 12 0.749 0.0501 0.657 0.854
36 51 1 0.735 0.0511 0.641 0.842
48 47 1 0.720 0.0522 0.624 0.830
60 46 0 0.720 0.0522 0.624 0.830
120 14 2 0.683 0.0557 0.582 0.802
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_N
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_N



Clinical Stage Group
uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=1 12 2 NA 30.09 NA
TNM_CLIN_STAGE_GROUP=1A 14 1 NA NA NA
TNM_CLIN_STAGE_GROUP=1B 3 2 21.7 6.77 NA
TNM_CLIN_STAGE_GROUP=2 7 2 NA 12.02 NA
TNM_CLIN_STAGE_GROUP=2A 5 1 NA 21.45 NA
TNM_CLIN_STAGE_GROUP=3 3 1 NA 7.95 NA
TNM_CLIN_STAGE_GROUP=3A 1 0 NA NA NA
TNM_CLIN_STAGE_GROUP=3B 2 1 67.1 67.06 NA
TNM_CLIN_STAGE_GROUP=4 12 3 NA NA NA
TNM_CLIN_STAGE_GROUP=4A 7 2 NA 80.00 NA
TNM_CLIN_STAGE_GROUP=4B 9 4 23.7 15.38 NA
TNM_CLIN_STAGE_GROUP=99 12 4 NA 20.86 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
TNM_CLIN_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 0 1.000 0.000 1.000 1
24 8 1 0.889 0.105 0.706 1
36 5 1 0.741 0.161 0.484 1
48 4 0 0.741 0.161 0.484 1
60 4 0 0.741 0.161 0.484 1
120 1 0 0.741 0.161 0.484 1
TNM_CLIN_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1
24 14 0 1.000 0.0000 1.000 1
36 14 0 1.000 0.0000 1.000 1
48 11 1 0.923 0.0739 0.789 1
60 10 0 0.923 0.0739 0.789 1
120 3 0 0.923 0.0739 0.789 1
TNM_CLIN_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.2995 1
24 1 1 0.333 0.272 0.0673 1
36 1 0 0.333 0.272 0.0673 1
48 1 0 0.333 0.272 0.0673 1
60 1 0 0.333 0.272 0.0673 1
TNM_CLIN_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 1 0.833 0.152 0.583 1
24 4 1 0.667 0.192 0.379 1
36 4 0 0.667 0.192 0.379 1
48 4 0 0.667 0.192 0.379 1
60 4 0 0.667 0.192 0.379 1
120 1 0 0.667 0.192 0.379 1
TNM_CLIN_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1.000 0.000 1.0 1
24 2 1 0.667 0.272 0.3 1
36 2 0 0.667 0.272 0.3 1
48 2 0 0.667 0.272 0.3 1
60 2 0 0.667 0.272 0.3 1
120 1 0 0.667 0.272 0.3 1
TNM_CLIN_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.3 1
24 2 0 0.667 0.272 0.3 1
36 2 0 0.667 0.272 0.3 1
48 2 0 0.667 0.272 0.3 1
60 2 0 0.667 0.272 0.3 1
120 1 0 0.667 0.272 0.3 1
TNM_CLIN_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
120 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 2 0.833 0.108 0.647 1
24 8 1 0.741 0.129 0.526 1
36 8 0 0.741 0.129 0.526 1
48 8 0 0.741 0.129 0.526 1
60 8 0 0.741 0.129 0.526 1
120 3 0 0.741 0.129 0.526 1
TNM_CLIN_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 1 0.857 0.132 0.633 1
24 5 0 0.857 0.132 0.633 1
36 5 0 0.857 0.132 0.633 1
48 5 0 0.857 0.132 0.633 1
60 5 0 0.857 0.132 0.633 1
120 1 1 0.643 0.210 0.338 1
TNM_CLIN_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 1 0.875 0.117 0.673 1
24 2 3 0.350 0.197 0.116 1
36 2 0 0.350 0.197 0.116 1
48 2 0 0.350 0.197 0.116 1
60 2 0 0.350 0.197 0.116 1
TNM_CLIN_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 0 1.0 0.000 1.000 1.000
24 6 4 0.6 0.155 0.362 0.995
36 6 0 0.6 0.155 0.362 0.995
48 6 0 0.6 0.155 0.362 0.995
60 6 0 0.6 0.155 0.362 0.995
120 2 0 0.6 0.155 0.362 0.995
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_STAGE_GROUP
Loglik converged before variable 6 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_STAGE_GROUP1A -1.211e+00 2.980e-01 1.226e+00 -0.987 0.323
TNM_CLIN_STAGE_GROUP1B 1.527e+00 4.604e+00 1.001e+00 1.525 0.127
TNM_CLIN_STAGE_GROUP2 5.639e-01 1.758e+00 1.003e+00 0.562 0.574
TNM_CLIN_STAGE_GROUP2A 1.970e-01 1.218e+00 1.226e+00 0.161 0.872
TNM_CLIN_STAGE_GROUP3 5.623e-01 1.755e+00 1.227e+00 0.458 0.647
TNM_CLIN_STAGE_GROUP3A -1.601e+01 1.118e-07 5.898e+03 -0.003 0.998
TNM_CLIN_STAGE_GROUP3B 7.050e-01 2.024e+00 1.227e+00 0.575 0.566
TNM_CLIN_STAGE_GROUP4 2.827e-01 1.327e+00 9.153e-01 0.309 0.757
TNM_CLIN_STAGE_GROUP4A 3.981e-01 1.489e+00 1.002e+00 0.397 0.691
TNM_CLIN_STAGE_GROUP4B 1.392e+00 4.021e+00 8.674e-01 1.604 0.109
TNM_CLIN_STAGE_GROUP99 6.657e-01 1.946e+00 8.679e-01 0.767 0.443
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1A 2.980e-01 3.356e+00 0.02695 3.295
TNM_CLIN_STAGE_GROUP1B 4.604e+00 2.172e-01 0.64683 32.765
TNM_CLIN_STAGE_GROUP2 1.758e+00 5.690e-01 0.24626 12.544
TNM_CLIN_STAGE_GROUP2A 1.218e+00 8.212e-01 0.11020 13.457
TNM_CLIN_STAGE_GROUP3 1.755e+00 5.699e-01 0.15843 19.433
TNM_CLIN_STAGE_GROUP3A 1.118e-07 8.941e+06 0.00000 Inf
TNM_CLIN_STAGE_GROUP3B 2.024e+00 4.941e-01 0.18276 22.409
TNM_CLIN_STAGE_GROUP4 1.327e+00 7.537e-01 0.22063 7.978
TNM_CLIN_STAGE_GROUP4A 1.489e+00 6.716e-01 0.20876 10.621
TNM_CLIN_STAGE_GROUP4B 4.021e+00 2.487e-01 0.73454 22.014
TNM_CLIN_STAGE_GROUP99 1.946e+00 5.139e-01 0.35511 10.662
Concordance= 0.686 (se = 0.062 )
Rsquare= 0.119 (max possible= 0.888 )
Likelihood ratio test= 11.02 on 11 df, p=0.4414
Wald test = 8.67 on 11 df, p=0.6526
Score (logrank) test = 11.54 on 11 df, p=0.3993
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.



Pathologic T Stage
uni_var(test_var = "TNM_PATH_T", data_imp = data)
_________________________________________________
## TNM_PATH_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_T, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
86 23 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_T, data = data)
1 observation deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 68 7 0.914 0.0312 0.855 0.977
24 54 12 0.749 0.0501 0.657 0.854
36 51 1 0.735 0.0511 0.641 0.842
48 47 1 0.720 0.0522 0.624 0.830
60 46 0 0.720 0.0522 0.624 0.830
120 14 2 0.683 0.0557 0.582 0.802
## Univariable Cox Proportional Hazard Model for: TNM_PATH_T
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_T



Pathologic N Stage
uni_var(test_var = "TNM_PATH_N", data_imp = data)
_________________________________________________
## TNM_PATH_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_N, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
86 23 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_N, data = data)
1 observation deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 68 7 0.914 0.0312 0.855 0.977
24 54 12 0.749 0.0501 0.657 0.854
36 51 1 0.735 0.0511 0.641 0.842
48 47 1 0.720 0.0522 0.624 0.830
60 46 0 0.720 0.0522 0.624 0.830
120 14 2 0.683 0.0557 0.582 0.802
## Univariable Cox Proportional Hazard Model for: TNM_PATH_N
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_N



Pathologic M Stage
uni_var(test_var = "TNM_PATH_M", data_imp = data)
_________________________________________________
## TNM_PATH_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_M, data = data)
3 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
84 23 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_M, data = data)
3 observations deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 67 7 0.912 0.0319 0.851 0.976
24 53 12 0.745 0.0507 0.652 0.852
36 50 1 0.731 0.0518 0.636 0.839
48 46 1 0.715 0.0529 0.619 0.827
60 45 0 0.715 0.0529 0.619 0.827
120 14 2 0.678 0.0564 0.576 0.798
## Univariable Cox Proportional Hazard Model for: TNM_PATH_M
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_M



Pathologic Stage Group
uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
2 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=1 3 1 30.1 30.09 NA
TNM_PATH_STAGE_GROUP=1A 4 0 NA NA NA
TNM_PATH_STAGE_GROUP=1B 2 1 21.7 21.72 NA
TNM_PATH_STAGE_GROUP=2 2 0 NA NA NA
TNM_PATH_STAGE_GROUP=2A 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=3 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=3A 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=3B 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=4 4 1 NA 18.10 NA
TNM_PATH_STAGE_GROUP=4A 1 1 80.0 NA NA
TNM_PATH_STAGE_GROUP=4B 3 2 19.1 1.05 NA
TNM_PATH_STAGE_GROUP=99 62 16 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
2 observations deleted due to missingness
TNM_PATH_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1.0 0.000 1.000 1
24 3 0 1.0 0.000 1.000 1
36 1 1 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
TNM_PATH_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1 0 1 1
24 4 0 1 0 1 1
36 4 0 1 0 1 1
48 4 0 1 0 1 1
60 4 0 1 0 1 1
120 2 0 1 0 1 1
TNM_PATH_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 1 1 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
TNM_PATH_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
120 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
TNM_PATH_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
120 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1.00 0.000 1.000 1
24 3 1 0.75 0.217 0.426 1
36 3 0 0.75 0.217 0.426 1
48 3 0 0.75 0.217 0.426 1
60 3 0 0.75 0.217 0.426 1
120 1 0 0.75 0.217 0.426 1
TNM_PATH_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12.000 1.000 1.000 0.667 0.272 0.300 1.000
TNM_PATH_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 48 6 0.896 0.0403 0.820 0.978
24 38 8 0.743 0.0596 0.635 0.869
36 37 0 0.743 0.0596 0.635 0.869
48 33 1 0.722 0.0616 0.610 0.853
60 32 0 0.722 0.0616 0.610 0.853
120 9 1 0.697 0.0643 0.581 0.835
## Univariable Cox Proportional Hazard Model for: TNM_PATH_STAGE_GROUP
Loglik converged before variable 1,3,4,5,6,7 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
n= 85, number of events= 22
(2 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_STAGE_GROUP1A -1.888e+01 6.344e-09 9.726e+03 -0.002 0.998
TNM_PATH_STAGE_GROUP1B 4.363e-01 1.547e+00 1.415e+00 0.308 0.758
TNM_PATH_STAGE_GROUP2 -1.888e+01 6.344e-09 1.375e+04 -0.001 0.999
TNM_PATH_STAGE_GROUP2A -1.895e+01 5.867e-09 8.576e+04 0.000 1.000
TNM_PATH_STAGE_GROUP3 -1.888e+01 6.344e-09 1.945e+04 -0.001 0.999
TNM_PATH_STAGE_GROUP3A -1.888e+01 6.344e-09 1.945e+04 -0.001 0.999
TNM_PATH_STAGE_GROUP3B -1.888e+01 6.344e-09 1.945e+04 -0.001 0.999
TNM_PATH_STAGE_GROUP4 -3.416e-01 7.106e-01 1.417e+00 -0.241 0.809
TNM_PATH_STAGE_GROUP4A 8.757e-01 2.400e+00 1.419e+00 0.617 0.537
TNM_PATH_STAGE_GROUP4B 1.854e+00 6.385e+00 1.242e+00 1.492 0.136
TNM_PATH_STAGE_GROUP99 -8.897e-02 9.149e-01 1.033e+00 -0.086 0.931
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1A 6.344e-09 1.576e+08 0.00000 Inf
TNM_PATH_STAGE_GROUP1B 1.547e+00 6.465e-01 0.09667 24.754
TNM_PATH_STAGE_GROUP2 6.344e-09 1.576e+08 0.00000 Inf
TNM_PATH_STAGE_GROUP2A 5.867e-09 1.705e+08 0.00000 Inf
TNM_PATH_STAGE_GROUP3 6.344e-09 1.576e+08 0.00000 Inf
TNM_PATH_STAGE_GROUP3A 6.344e-09 1.576e+08 0.00000 Inf
TNM_PATH_STAGE_GROUP3B 6.344e-09 1.576e+08 0.00000 Inf
TNM_PATH_STAGE_GROUP4 7.106e-01 1.407e+00 0.04424 11.414
TNM_PATH_STAGE_GROUP4A 2.400e+00 4.166e-01 0.14874 38.739
TNM_PATH_STAGE_GROUP4B 6.385e+00 1.566e-01 0.55945 72.879
TNM_PATH_STAGE_GROUP99 9.149e-01 1.093e+00 0.12068 6.935
Concordance= 0.62 (se = 0.051 )
Rsquare= 0.132 (max possible= 0.883 )
Likelihood ratio test= 11.99 on 11 df, p=0.3642
Wald test = 7.17 on 11 df, p=0.785
Score (logrank) test = 14.6 on 11 df, p=0.2015
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.



Margins
uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n events median 0.95LCL 0.95UCL
MARGINS=No Residual 4 0 NA NA NA
MARGINS=Residual, NOS 1 0 NA NA NA
MARGINS=Microscopic Resid 1 0 NA NA NA
MARGINS=Macroscopic Resid 1 0 NA NA NA
MARGINS=Not evaluable 5 2 NA 12 NA
MARGINS=No surg 66 20 NA NA NA
MARGINS=Unknown 9 1 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
MARGINS=No Residual
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
MARGINS=Residual, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
MARGINS=Microscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
120 1 0 1 0 1 1
MARGINS=Macroscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
MARGINS=Not evaluable
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.8 0.179 0.516 1
24 3 1 0.6 0.219 0.293 1
36 2 0 0.6 0.219 0.293 1
48 2 0 0.6 0.219 0.293 1
60 2 0 0.6 0.219 0.293 1
120 1 0 0.6 0.219 0.293 1
MARGINS=No surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 53 6 0.905 0.0371 0.835 0.980
24 41 10 0.729 0.0581 0.624 0.853
36 39 1 0.711 0.0594 0.604 0.838
48 36 1 0.692 0.0608 0.582 0.822
60 36 0 0.692 0.0608 0.582 0.822
120 11 2 0.645 0.0651 0.530 0.787
MARGINS=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 0 1.000 0.000 1.000 1
24 7 1 0.875 0.117 0.673 1
36 7 0 0.875 0.117 0.673 1
48 6 0 0.875 0.117 0.673 1
60 5 0 0.875 0.117 0.673 1
120 1 0 0.875 0.117 0.673 1
## Univariable Cox Proportional Hazard Model for: MARGINS
Loglik converged before variable 1,2,3,4,5,6 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
MARGINSResidual, NOS -3.184e-03 9.968e-01 1.830e+04 0.000 1.000
MARGINSMicroscopic Resid -3.184e-03 9.968e-01 1.830e+04 0.000 1.000
MARGINSMacroscopic Resid -3.184e-03 9.968e-01 1.830e+04 0.000 1.000
MARGINSNot evaluable 1.865e+01 1.261e+08 1.190e+04 0.002 0.999
MARGINSNo surg 1.822e+01 8.188e+07 1.190e+04 0.002 0.999
MARGINSUnknown 1.709e+01 2.636e+07 1.190e+04 0.001 0.999
exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS 9.968e-01 1.003e+00 0 Inf
MARGINSMicroscopic Resid 9.968e-01 1.003e+00 0 Inf
MARGINSMacroscopic Resid 9.968e-01 1.003e+00 0 Inf
MARGINSNot evaluable 1.261e+08 7.933e-09 0 Inf
MARGINSNo surg 8.188e+07 1.221e-08 0 Inf
MARGINSUnknown 2.636e+07 3.794e-08 0 Inf
Concordance= 0.595 (se = 0.046 )
Rsquare= 0.062 (max possible= 0.888 )
Likelihood ratio test= 5.55 on 6 df, p=0.4757
Wald test = 1.65 on 6 df, p=0.9487
Score (logrank) test = 3.71 on 6 df, p=0.7154
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: MARGINS



Margins Yes/No
#uni_var(test_var = "MARGINS_YN", data_imp = data)
30 Day Readmission
uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 84 21 NA NA NA
READM_HOSP_30_DAYS_F=9 3 2 20.9 12 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 66 7 0.912 0.0319 0.851 0.976
24 54 10 0.771 0.0491 0.680 0.873
36 51 1 0.756 0.0504 0.663 0.861
48 48 1 0.740 0.0516 0.646 0.849
60 47 0 0.740 0.0516 0.646 0.849
120 14 2 0.704 0.0553 0.603 0.821
READM_HOSP_30_DAYS_F=9
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1.000 0.000 1.0000 1
24 1 2 0.333 0.272 0.0673 1
36 1 0 0.333 0.272 0.0673 1
## Univariable Cox Proportional Hazard Model for: READM_HOSP_30_DAYS_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
READM_HOSP_30_DAYS_F9 1.2202 3.3877 0.7462 1.635 0.102
exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_F9 3.388 0.2952 0.7848 14.62
Concordance= 0.529 (se = 0.019 )
Rsquare= 0.022 (max possible= 0.888 )
Likelihood ratio test= 1.95 on 1 df, p=0.1621
Wald test = 2.67 on 1 df, p=0.102
Score (logrank) test = 3.02 on 1 df, p=0.08216
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: READM_HOSP_30_DAYS_F



Radiation Type
uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None 76 20 NA NA NA
RX_SUMM_RADIATION_F=Beam Radiation 10 2 NA NA NA
RX_SUMM_RADIATION_F=Unknown 1 1 21.1 NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
RX_SUMM_RADIATION_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 59 6 0.916 0.0327 0.855 0.983
24 47 11 0.743 0.0540 0.644 0.857
36 45 0 0.743 0.0540 0.644 0.857
48 41 1 0.726 0.0555 0.625 0.843
60 40 0 0.726 0.0555 0.625 0.843
120 12 2 0.684 0.0596 0.577 0.812
RX_SUMM_RADIATION_F=Beam Radiation
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 1 0.900 0.0949 0.732 1
24 8 0 0.900 0.0949 0.732 1
36 7 1 0.787 0.1340 0.564 1
48 7 0 0.787 0.1340 0.564 1
60 7 0 0.787 0.1340 0.564 1
120 2 0 0.787 0.1340 0.564 1
RX_SUMM_RADIATION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: RX_SUMM_RADIATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation -0.4565 0.6335 0.7419 -0.615 0.538
RX_SUMM_RADIATION_FUnknown 1.4723 4.3591 1.0354 1.422 0.155
exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation 0.6335 1.5785 0.1480 2.712
RX_SUMM_RADIATION_FUnknown 4.3591 0.2294 0.5729 33.169
Concordance= 0.537 (se = 0.038 )
Rsquare= 0.021 (max possible= 0.888 )
Likelihood ratio test= 1.87 on 2 df, p=0.3924
Wald test = 2.52 on 2 df, p=0.2831
Score (logrank) test = 3 on 2 df, p=0.2232
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_SUMM_RADIATION_F



Lymphovascular Invasion
#uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)
Endoscopic/Robotic
uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
63 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg 20 2 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown 4 0 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
63 observations deleted due to missingness
RX_HOSP_SURG_APPR_2010_F=No_Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 1 0.938 0.0605 0.826 1
24 10 1 0.852 0.0981 0.680 1
36 10 0 0.852 0.0981 0.680 1
48 8 0 0.852 0.0981 0.680 1
60 8 0 0.852 0.0981 0.680 1
RX_HOSP_SURG_APPR_2010_F=Open_Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable 1 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
n= 24, number of events= 2
(63 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -1.817e+01 1.289e-08 1.896e+04 -0.001 0.999
exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 1.289e-08 77584019 0 Inf
Concordance= 0.554 (se = 0.117 )
Rsquare= 0.017 (max possible= 0.361 )
Likelihood ratio test= 0.41 on 1 df, p=0.5222
Wald test = 0 on 1 df, p=0.9992
Score (logrank) test = 0.22 on 1 df, p=0.6422
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_HOSP_SURG_APPR_2010_F



Surgery Radiation Sequence
uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone 19 3 NA NA NA
SURG_RAD_SEQ=Surg then Rad 1 0 NA NA NA
SURG_RAD_SEQ=Rad Alone 9 2 NA NA NA
SURG_RAD_SEQ=No Treatment 55 16 NA NA NA
SURG_RAD_SEQ=Other 3 2 41.3 21.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
SURG_RAD_SEQ=Surg Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 1 0.947 0.0512 0.852 1
24 12 2 0.812 0.0989 0.640 1
36 11 0 0.812 0.0989 0.640 1
48 10 0 0.812 0.0989 0.640 1
60 10 0 0.812 0.0989 0.640 1
120 3 0 0.812 0.0989 0.640 1
SURG_RAD_SEQ=Surg then Rad
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SURG_RAD_SEQ=Rad Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 1 0.889 0.105 0.706 1
24 7 0 0.889 0.105 0.706 1
36 6 1 0.762 0.148 0.521 1
48 6 0 0.762 0.148 0.521 1
60 6 0 0.762 0.148 0.521 1
120 2 0 0.762 0.148 0.521 1
SURG_RAD_SEQ=No Treatment
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 43 5 0.905 0.0406 0.828 0.988
24 33 9 0.711 0.0655 0.594 0.852
36 32 0 0.711 0.0655 0.594 0.852
48 30 0 0.711 0.0655 0.594 0.852
60 30 0 0.711 0.0655 0.594 0.852
120 9 2 0.655 0.0713 0.529 0.811
SURG_RAD_SEQ=Other
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1.000 0.000 1.0000 1
24 2 1 0.667 0.272 0.2995 1
36 2 0 0.667 0.272 0.2995 1
48 1 1 0.333 0.272 0.0673 1
## Univariable Cox Proportional Hazard Model for: SURG_RAD_SEQ
Loglik converged before variable 1 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad -1.562e+01 1.646e-07 5.102e+03 -0.003 0.998
SURG_RAD_SEQRad Alone 1.567e-01 1.170e+00 9.133e-01 0.172 0.864
SURG_RAD_SEQNo Treatment 5.846e-01 1.794e+00 6.293e-01 0.929 0.353
SURG_RAD_SEQOther 1.307e+00 3.694e+00 9.168e-01 1.425 0.154
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 1.646e-07 6.077e+06 0.0000 Inf
SURG_RAD_SEQRad Alone 1.170e+00 8.549e-01 0.1953 7.006
SURG_RAD_SEQNo Treatment 1.794e+00 5.573e-01 0.5227 6.160
SURG_RAD_SEQOther 3.694e+00 2.707e-01 0.6125 22.275
Concordance= 0.568 (se = 0.054 )
Rsquare= 0.034 (max possible= 0.888 )
Likelihood ratio test= 3.01 on 4 df, p=0.5554
Wald test = 2.36 on 4 df, p=0.6701
Score (logrank) test = 2.92 on 4 df, p=0.5706
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURG_RAD_SEQ



Surgery Yes/No
uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n events median 0.95LCL 0.95UCL
SURGERY_YN=No 65 19 NA NA NA
SURGERY_YN=Ukn 2 1 41.3 41.3 NA
SURGERY_YN=Yes 20 3 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
SURGERY_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 6 0.903 0.0376 0.832 0.980
24 40 10 0.725 0.0589 0.618 0.850
36 38 1 0.706 0.0603 0.597 0.835
48 36 0 0.706 0.0603 0.597 0.835
60 36 0 0.706 0.0603 0.597 0.835
120 11 2 0.659 0.0649 0.543 0.799
SURGERY_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 2 0 1.0 0.000 1.000 1
36 2 0 1.0 0.000 1.000 1
48 1 1 0.5 0.354 0.125 1
SURGERY_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 1 0.950 0.0487 0.859 1
24 13 2 0.823 0.0935 0.659 1
36 12 0 0.823 0.0935 0.659 1
48 11 0 0.823 0.0935 0.659 1
60 11 0 0.823 0.0935 0.659 1
120 3 0 0.823 0.0935 0.659 1
## Univariable Cox Proportional Hazard Model for: SURGERY_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
SURGERY_YNUkn 0.3470 1.4149 1.0287 0.337 0.736
SURGERY_YNYes -0.6419 0.5263 0.6215 -1.033 0.302
exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn 1.4149 0.7068 0.1884 10.626
SURGERY_YNYes 0.5263 1.9001 0.1557 1.779
Concordance= 0.54 (se = 0.047 )
Rsquare= 0.016 (max possible= 0.888 )
Likelihood ratio test= 1.42 on 2 df, p=0.492
Wald test = 1.25 on 2 df, p=0.5364
Score (logrank) test = 1.29 on 2 df, p=0.524
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURGERY_YN



Radiation Yes/No
uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
RADIATION_YN=No 76 20 NA NA NA
RADIATION_YN=Yes 10 2 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
1 observation deleted due to missingness
RADIATION_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 59 6 0.916 0.0327 0.855 0.983
24 47 11 0.743 0.0540 0.644 0.857
36 45 0 0.743 0.0540 0.644 0.857
48 41 1 0.726 0.0555 0.625 0.843
60 40 0 0.726 0.0555 0.625 0.843
120 12 2 0.684 0.0596 0.577 0.812
RADIATION_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 1 0.900 0.0949 0.732 1
24 8 0 0.900 0.0949 0.732 1
36 7 1 0.787 0.1340 0.564 1
48 7 0 0.787 0.1340 0.564 1
60 7 0 0.787 0.1340 0.564 1
120 2 0 0.787 0.1340 0.564 1
## Univariable Cox Proportional Hazard Model for: RADIATION_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
n= 86, number of events= 22
(1 observation deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RADIATION_YNYes -0.4555 0.6342 0.7419 -0.614 0.539
exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes 0.6342 1.577 0.1481 2.715
Concordance= 0.524 (se = 0.038 )
Rsquare= 0.005 (max possible= 0.88 )
Likelihood ratio test= 0.43 on 1 df, p=0.5136
Wald test = 0.38 on 1 df, p=0.5393
Score (logrank) test = 0.38 on 1 df, p=0.5358
## Unadjusted Kaplan Meier Overall Survival Curve for: RADIATION_YN



Chemo Yes/No
uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n events median 0.95LCL 0.95UCL
CHEMO_YN=No 29 3 NA NA NA
CHEMO_YN=Yes 55 19 NA 80.0 NA
CHEMO_YN=Ukn 3 1 21.1 21.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
CHEMO_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 24 1 0.966 0.0339 0.901 1
24 22 1 0.925 0.0510 0.830 1
36 20 1 0.881 0.0649 0.763 1
48 19 0 0.881 0.0649 0.763 1
60 19 0 0.881 0.0649 0.763 1
120 6 0 0.881 0.0649 0.763 1
CHEMO_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 43 6 0.885 0.0442 0.803 0.976
24 32 10 0.675 0.0671 0.556 0.820
36 31 0 0.675 0.0671 0.556 0.820
48 28 1 0.652 0.0687 0.530 0.801
60 27 0 0.652 0.0687 0.530 0.801
120 8 2 0.597 0.0730 0.470 0.759
CHEMO_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 1 1 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
## Univariable Cox Proportional Hazard Model for: CHEMO_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n= 87, number of events= 23
coef exp(coef) se(coef) z Pr(>|z|)
CHEMO_YNYes 1.3203 3.7447 0.6216 2.124 0.0337 *
CHEMO_YNUkn 1.3948 4.0343 1.1566 1.206 0.2278
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes 3.745 0.2670 1.1073 12.66
CHEMO_YNUkn 4.034 0.2479 0.4181 38.93
Concordance= 0.609 (se = 0.053 )
Rsquare= 0.069 (max possible= 0.888 )
Likelihood ratio test= 6.18 on 2 df, p=0.04547
Wald test = 4.57 on 2 df, p=0.1017
Score (logrank) test = 5.28 on 2 df, p=0.07151
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: CHEMO_YN



Treatment Yes/No
uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
3 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 14 1 NA NA NA
Tx_YN=TRUE 70 21 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
3 observations deleted due to missingness
Tx_YN=FALSE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 0 1.000 0.0000 1.000 1
24 11 1 0.917 0.0798 0.773 1
36 11 0 0.917 0.0798 0.773 1
48 11 0 0.917 0.0798 0.773 1
60 11 0 0.917 0.0798 0.773 1
120 3 0 0.917 0.0798 0.773 1
Tx_YN=TRUE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 55 7 0.894 0.0378 0.823 0.972
24 43 10 0.728 0.0566 0.625 0.848
36 40 1 0.710 0.0580 0.605 0.833
48 36 1 0.691 0.0594 0.584 0.818
60 35 0 0.691 0.0594 0.584 0.818
120 11 2 0.646 0.0637 0.532 0.783
## Univariable Cox Proportional Hazard Model for: Tx_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
n= 84, number of events= 22
(3 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
Tx_YNTRUE 1.589 4.898 1.024 1.552 0.121
exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE 4.898 0.2042 0.6583 36.44
Concordance= 0.571 (se = 0.043 )
Rsquare= 0.046 (max possible= 0.885 )
Likelihood ratio test= 3.99 on 1 df, p=0.04573
Wald test = 2.41 on 1 df, p=0.1207
Score (logrank) test = 2.96 on 1 df, p=0.08547
## Unadjusted Kaplan Meier Overall Survival Curve for: Tx_YN



Tumor specific Variables
Node Size
Cox Proportional Hazard Ratio
Model #1
Full analysis
model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
data = data)
Ran out of iterations and did not converge
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F +
INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F, data = data)
n= 52, number of events= 20
(35 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad 0.000e+00 1.000e+00 0.000e+00 NA NA
SURG_RAD_SEQRad Alone -9.473e+01 7.268e-42 1.044e+03 -0.091 0.928
SURG_RAD_SEQNo Treatment 2.498e+01 7.028e+10 2.780e+02 0.090 0.928
SURG_RAD_SEQOther 9.783e+01 3.079e+42 9.636e+04 0.001 0.999
INSURANCE_FNone 2.581e+02 1.233e+112 9.641e+04 0.003 0.998
INSURANCE_FMedicaid 1.510e+01 3.611e+06 5.286e+04 0.000 1.000
INSURANCE_FMedicare -6.574e+00 1.396e-03 3.048e+00 -2.157 0.031 *
INSURANCE_FOther Government 0.000e+00 1.000e+00 0.000e+00 NA NA
INSURANCE_FUnknown -6.659e+01 1.208e-29 9.635e+04 -0.001 0.999
AGE 4.362e-02 1.045e+00 2.165e-01 0.201 0.840
SEX_FFemale -6.324e+01 3.432e-28 6.302e+02 -0.100 0.920
RACE_FBlack -9.781e+01 3.308e-43 1.106e+03 -0.088 0.930
RACE_FOther/Unk 0.000e+00 1.000e+00 0.000e+00 NA NA
RACE_FAsian 0.000e+00 1.000e+00 0.000e+00 NA NA
INCOME_F$38,000 - $47,999 1.138e+02 2.725e+49 9.809e+02 0.116 0.908
INCOME_F$48,000 - $62,999 1.265e+01 3.113e+05 3.577e+02 0.035 0.972
INCOME_F$63,000 + -3.053e+01 5.496e-14 5.220e+02 -0.058 0.953
U_R_FUrban 1.608e+02 6.573e+69 1.404e+03 0.114 0.909
FACILITY_TYPE_FAcademic/Research Program 1.118e+02 3.743e+48 1.123e+03 0.100 0.921
FACILITY_TYPE_FIntegrated Network Ca Program -9.608e+01 1.884e-42 8.082e+02 -0.119 0.905
FACILITY_LOCATION_FMiddle Atlantic -9.981e+01 4.489e-44 1.058e+03 -0.094 0.925
FACILITY_LOCATION_FSouth Atlantic -2.286e+02 5.514e-100 2.087e+03 -0.110 0.913
FACILITY_LOCATION_FEast North Central -1.695e+02 2.500e-74 1.662e+03 -0.102 0.919
FACILITY_LOCATION_FEast South Central -3.897e+02 5.442e-170 4.107e+04 -0.009 0.992
FACILITY_LOCATION_FWest North Central -1.253e+02 4.014e-55 1.163e+03 -0.108 0.914
FACILITY_LOCATION_FWest South Central -1.923e+02 2.944e-84 2.025e+03 -0.095 0.924
FACILITY_LOCATION_FMountain -9.644e+01 1.314e-42 1.058e+03 -0.091 0.927
FACILITY_LOCATION_FPacific -3.882e+02 2.539e-169 7.003e+03 -0.055 0.956
EDUCATION_F13 - 20.9% 1.399e+02 5.950e+60 1.283e+03 0.109 0.913
EDUCATION_F7 - 12.9% 7.680e+01 2.253e+33 6.302e+02 0.122 0.903
EDUCATION_FLess than 7% 9.245e+01 1.414e+40 1.044e+03 0.089 0.929
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 1.000e+00 1.000e+00 1.000e+00 1.000e+00
SURG_RAD_SEQRad Alone 7.268e-42 1.376e+41 0.000e+00 Inf
SURG_RAD_SEQNo Treatment 7.028e+10 1.423e-11 1.513e-226 3.265e+247
SURG_RAD_SEQOther 3.079e+42 3.247e-43 0.000e+00 Inf
INSURANCE_FNone 1.233e+112 8.108e-113 0.000e+00 Inf
INSURANCE_FMedicaid 3.611e+06 2.769e-07 0.000e+00 Inf
INSURANCE_FMedicare 1.396e-03 7.165e+02 3.550e-06 5.487e-01
INSURANCE_FOther Government 1.000e+00 1.000e+00 1.000e+00 1.000e+00
INSURANCE_FUnknown 1.208e-29 8.279e+28 0.000e+00 Inf
AGE 1.045e+00 9.573e-01 6.833e-01 1.597e+00
SEX_FFemale 3.432e-28 2.914e+27 0.000e+00 Inf
RACE_FBlack 3.308e-43 3.023e+42 0.000e+00 Inf
RACE_FOther/Unk 1.000e+00 1.000e+00 1.000e+00 1.000e+00
RACE_FAsian 1.000e+00 1.000e+00 1.000e+00 1.000e+00
INCOME_F$38,000 - $47,999 2.725e+49 3.670e-50 0.000e+00 Inf
INCOME_F$48,000 - $62,999 3.113e+05 3.212e-06 1.017e-299 Inf
INCOME_F$63,000 + 5.496e-14 1.820e+13 0.000e+00 Inf
U_R_FUrban 6.573e+69 1.521e-70 0.000e+00 Inf
FACILITY_TYPE_FAcademic/Research Program 3.743e+48 2.671e-49 0.000e+00 Inf
FACILITY_TYPE_FIntegrated Network Ca Program 1.884e-42 5.309e+41 0.000e+00 Inf
FACILITY_LOCATION_FMiddle Atlantic 4.489e-44 2.227e+43 0.000e+00 Inf
FACILITY_LOCATION_FSouth Atlantic 5.514e-100 1.813e+99 0.000e+00 Inf
FACILITY_LOCATION_FEast North Central 2.500e-74 4.001e+73 0.000e+00 Inf
FACILITY_LOCATION_FEast South Central 5.442e-170 1.838e+169 0.000e+00 Inf
FACILITY_LOCATION_FWest North Central 4.014e-55 2.491e+54 0.000e+00 Inf
FACILITY_LOCATION_FWest South Central 2.944e-84 3.397e+83 0.000e+00 Inf
FACILITY_LOCATION_FMountain 1.314e-42 7.610e+41 0.000e+00 Inf
FACILITY_LOCATION_FPacific 2.539e-169 3.939e+168 0.000e+00 Inf
EDUCATION_F13 - 20.9% 5.950e+60 1.681e-61 0.000e+00 Inf
EDUCATION_F7 - 12.9% 2.253e+33 4.438e-34 0.000e+00 Inf
EDUCATION_FLess than 7% 1.414e+40 7.071e-41 0.000e+00 Inf
Concordance= 0.995 (se = 0.068 )
Rsquare= 0.895 (max possible= 0.938 )
Likelihood ratio test= 117 on 31 df, p=6.534e-12
Wald test = 10.8 on 31 df, p=0.9997
Score (logrank) test = 57.36 on 31 df, p=0.002726
Summary of Model
model_one %>%
tidy(., exponentiate = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value) %>%
rename(Variable = term,
Hazard_Ratio = estimate) %>%
tbl_df %>%
print(n = nrow(.))
Linear Regression
summary(fit_surv) # R^2 = .8078, p = 0.0008977
Call:
lm(formula = DX_LASTCONTACT_DEATH_MONTHS ~ DX_STAGING_PROC_DAYS +
CROWFLY + CHEMO_YN + SEX_F + RACE_F + YEAR_OF_DIAGNOSIS +
SITE_TEXT + GRADE_F, data = data2)
Residuals:
Min 1Q Median 3Q Max
-71.66 -25.46 0.00 25.88 73.40
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 122.05134 32.33450 3.775 0.000486 ***
DX_STAGING_PROC_DAYS 0.40579 0.43571 0.931 0.356883
CROWFLY 0.04998 0.04819 1.037 0.305441
CHEMO_YNYes -33.61429 14.09702 -2.384 0.021584 *
SEX_FFemale 24.85570 13.89474 1.789 0.080684 .
RACE_FBlack 4.77855 14.04436 0.340 0.735327
RACE_FOther/Unk 83.58793 46.95944 1.780 0.082143 .
RACE_FAsian 27.88489 22.07823 1.263 0.213394
YEAR_OF_DIAGNOSIS2005 -33.75836 24.41423 -1.383 0.173886
YEAR_OF_DIAGNOSIS2006 -22.80886 26.39554 -0.864 0.392318
YEAR_OF_DIAGNOSIS2007 -45.73138 21.13301 -2.164 0.036066 *
YEAR_OF_DIAGNOSIS2008 -21.28983 22.93201 -0.928 0.358388
YEAR_OF_DIAGNOSIS2009 -41.46382 25.65887 -1.616 0.113416
YEAR_OF_DIAGNOSIS2010 -60.37461 24.01853 -2.514 0.015774 *
YEAR_OF_DIAGNOSIS2011 -72.37274 24.90294 -2.906 0.005761 **
YEAR_OF_DIAGNOSIS2015 -96.47904 23.34793 -4.132 0.000163 ***
SITE_TEXTC44.5 Skin of trunk 16.82386 29.40320 0.572 0.570181
SITE_TEXTC44.6 Skin of upper limb and shoulder -18.54506 32.81928 -0.565 0.574965
SITE_TEXTC44.7 Skin of lower limb and hip -23.06712 26.17634 -0.881 0.383098
SITE_TEXTC44.8 Overlapping lesion of skin -55.56995 31.45754 -1.767 0.084409 .
SITE_TEXTC44.9 Skin, NOS -9.56612 25.94309 -0.369 0.714135
GRADE_FNA/Unkown -55.95007 22.92785 -2.440 0.018872 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 41.25 on 43 degrees of freedom
(17 observations deleted due to missingness)
Multiple R-squared: 0.5401, Adjusted R-squared: 0.3155
F-statistic: 2.405 on 21 and 43 DF, p-value: 0.007362
Prediction Logistic Regression Models
Surgery
no_Ukns <- data %>%
filter(SURGERY_YN != "Ukn") %>%
droplevels() %>%
mutate(SURGERY_YN = as.logical(SURGERY_YN))
fit_surg <- glm(SURG_TF ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
data = no_Ukns)
summary(fit_surg)
Call:
glm(formula = SURG_TF ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F +
RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.42677 -0.11553 -0.00235 0.14037 0.40171
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.47593 0.68000 0.700 0.4963
AGE_F(54,64] 0.38338 0.19995 1.917 0.0774 .
AGE_F(64,74] 0.30230 0.38572 0.784 0.4473
AGE_F(74,100] 0.51316 0.42787 1.199 0.2518
PRIMARY_SITEC445 0.76139 0.54728 1.391 0.1875
PRIMARY_SITEC446 0.86939 0.65007 1.337 0.2040
PRIMARY_SITEC447 0.51060 0.48365 1.056 0.3103
PRIMARY_SITEC448 -0.10753 0.44110 -0.244 0.8112
PRIMARY_SITEC449 0.74619 0.46312 1.611 0.1311
GRADE_FNA/Unkown 0.23431 0.25578 0.916 0.3763
SEX_FFemale -0.06316 0.22622 -0.279 0.7845
RACE_FBlack -0.01529 0.20294 -0.075 0.9411
INSURANCE_FNone 0.89947 0.91492 0.983 0.3435
INSURANCE_FMedicaid -0.25564 0.41724 -0.613 0.5507
INSURANCE_FMedicare -0.62013 0.26103 -2.376 0.0336 *
INSURANCE_FUnknown -1.00035 0.62441 -1.602 0.1332
FACILITY_TYPE_FAcademic/Research Program 0.16925 0.31987 0.529 0.6056
FACILITY_TYPE_FIntegrated Network Ca Program -0.20354 0.34772 -0.585 0.5683
FACILITY_LOCATION_FMiddle Atlantic 0.08220 0.26454 0.311 0.7609
FACILITY_LOCATION_FSouth Atlantic -0.20481 0.26247 -0.780 0.4492
FACILITY_LOCATION_FEast North Central -0.42588 0.33060 -1.288 0.2201
FACILITY_LOCATION_FEast South Central -0.02856 0.40863 -0.070 0.9453
FACILITY_LOCATION_FWest North Central -0.25430 0.32296 -0.787 0.4452
FACILITY_LOCATION_FWest South Central -1.24469 0.65955 -1.887 0.0817 .
FACILITY_LOCATION_FMountain -0.06325 0.42695 -0.148 0.8845
FACILITY_LOCATION_FPacific 0.09072 0.47345 0.192 0.8510
EDUCATION_F13 - 20.9% -0.25956 0.25949 -1.000 0.3354
EDUCATION_F7 - 12.9% 0.22726 0.26627 0.853 0.4088
EDUCATION_FLess than 7% -0.22383 0.25308 -0.884 0.3925
EXPN_GROUPPre-Expansion -0.04291 0.34228 -0.125 0.9021
YEAR_OF_DIAGNOSIS2005 -1.15331 0.55688 -2.071 0.0588 .
YEAR_OF_DIAGNOSIS2006 -0.39164 0.47709 -0.821 0.4265
YEAR_OF_DIAGNOSIS2007 -1.23985 0.53534 -2.316 0.0375 *
YEAR_OF_DIAGNOSIS2008 0.03872 0.41932 0.092 0.9278
YEAR_OF_DIAGNOSIS2009 -0.62564 0.46876 -1.335 0.2049
YEAR_OF_DIAGNOSIS2010 -0.53842 0.56304 -0.956 0.3564
YEAR_OF_DIAGNOSIS2011 -1.10293 0.60145 -1.834 0.0897 .
YEAR_OF_DIAGNOSIS2013 -0.99335 0.84718 -1.173 0.2620
YEAR_OF_DIAGNOSIS2015 -1.03945 0.45982 -2.261 0.0416 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.1388242)
Null deviance: 9.2308 on 51 degrees of freedom
Residual deviance: 1.8047 on 13 degrees of freedom
(33 observations deleted due to missingness)
AIC: 52.806
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_surg), confint.default(fit_surg, level = 0.95)))
Odds ratio 2.5 % 97.5 %
(Intercept) 1.6095165 0.42449668 6.1026231
AGE_F(54,64] 1.4672426 0.99152403 2.1712038
AGE_F(64,74] 1.3529639 0.63526754 2.8814808
AGE_F(74,100] 1.6705617 0.72220502 3.8642442
PRIMARY_SITEC445 2.1412502 0.73252074 6.2591435
PRIMARY_SITEC446 2.3854495 0.66715422 8.5293163
PRIMARY_SITEC447 1.6662833 0.64574765 4.2996674
PRIMARY_SITEC448 0.8980521 0.37829927 2.1319036
PRIMARY_SITEC449 2.1089499 0.85086093 5.2272580
GRADE_FNA/Unkown 1.2640328 0.76565827 2.0868042
SEX_FFemale 0.9387967 0.60258299 1.4626022
RACE_FBlack 0.9848256 0.66163583 1.4658840
INSURANCE_FNone 2.4583020 0.40912399 14.7711908
INSURANCE_FMedicaid 0.7744221 0.34183795 1.7544264
INSURANCE_FMedicare 0.5378765 0.32247403 0.8971611
INSURANCE_FUnknown 0.3677511 0.10815635 1.2504200
FACILITY_TYPE_FAcademic/Research Program 1.1844196 0.63274336 2.2170915
FACILITY_TYPE_FIntegrated Network Ca Program 0.8158353 0.41269229 1.6127931
FACILITY_LOCATION_FMiddle Atlantic 1.0856769 0.64643008 1.8233902
FACILITY_LOCATION_FSouth Atlantic 0.8147991 0.48712383 1.3628928
FACILITY_LOCATION_FEast North Central 0.6531932 0.34169037 1.2486783
FACILITY_LOCATION_FEast South Central 0.9718451 0.43628267 2.1648417
FACILITY_LOCATION_FWest North Central 0.7754585 0.41177329 1.4603568
FACILITY_LOCATION_FWest South Central 0.2880313 0.07907364 1.0491743
FACILITY_LOCATION_FMountain 0.9387056 0.40654386 2.1674617
FACILITY_LOCATION_FPacific 1.0949611 0.43291221 2.7694758
EDUCATION_F13 - 20.9% 0.7713886 0.46386590 1.2827852
EDUCATION_F7 - 12.9% 1.2551519 0.74480667 2.1151881
EDUCATION_FLess than 7% 0.7994481 0.48682020 1.3128403
EXPN_GROUPPre-Expansion 0.9579959 0.48979889 1.8737406
YEAR_OF_DIAGNOSIS2005 0.3155889 0.10595043 0.9400276
YEAR_OF_DIAGNOSIS2006 0.6759497 0.26534492 1.7219396
YEAR_OF_DIAGNOSIS2007 0.2894289 0.10135859 0.8264625
YEAR_OF_DIAGNOSIS2008 1.0394780 0.45697138 2.3645126
YEAR_OF_DIAGNOSIS2009 0.5349206 0.21344303 1.3405924
YEAR_OF_DIAGNOSIS2010 0.5836697 0.19359999 1.7596609
YEAR_OF_DIAGNOSIS2011 0.3318984 0.10210571 1.0788478
YEAR_OF_DIAGNOSIS2013 0.3703327 0.07038403 1.9485433
YEAR_OF_DIAGNOSIS2015 0.3536500 0.14360651 0.8709097
Chemo
no_Ukns <- data %>%
filter(CHEMO_YN != "Ukn") %>%
droplevels() %>%
mutate(CHEMO_YN = fct_recode(CHEMO_YN,
"0" = "No",
"1" = "Yes")) %>%
mutate(CHEMO_YN = as.integer(CHEMO_YN)) %>%
mutate(CHEMO_YN = CHEMO_YN - 1)
fit_chemo <- glm(CHEMO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
data = no_Ukns)
summary(fit_chemo)
Call:
glm(formula = CHEMO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F +
RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.57095 -0.18986 -0.00192 0.20337 0.54684
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.00029 0.89860 2.226 0.0418 *
AGE_F(54,64] -0.16392 0.26465 -0.619 0.5450
AGE_F(64,74] -0.86267 0.49754 -1.734 0.1034
AGE_F(74,100] -0.08320 0.52511 -0.158 0.8762
PRIMARY_SITEC445 -0.71623 0.71508 -1.002 0.3324
PRIMARY_SITEC446 -1.27615 0.81629 -1.563 0.1388
PRIMARY_SITEC447 -0.89506 0.63630 -1.407 0.1799
PRIMARY_SITEC448 -0.32166 0.58077 -0.554 0.5878
PRIMARY_SITEC449 -0.41036 0.59502 -0.690 0.5009
GRADE_FNA/Unkown -0.56920 0.33943 -1.677 0.1143
SEX_FFemale 0.18374 0.30054 0.611 0.5501
RACE_FBlack -0.68795 0.26943 -2.553 0.0220 *
INSURANCE_FMedicaid -0.15247 0.54029 -0.282 0.7817
INSURANCE_FMedicare 0.08778 0.32208 0.273 0.7889
INSURANCE_FUnknown -0.20405 0.75379 -0.271 0.7903
FACILITY_TYPE_FAcademic/Research Program -0.27401 0.38935 -0.704 0.4924
FACILITY_TYPE_FIntegrated Network Ca Program -0.71692 0.45121 -1.589 0.1329
FACILITY_LOCATION_FMiddle Atlantic -0.26043 0.33564 -0.776 0.4499
FACILITY_LOCATION_FSouth Atlantic -0.00396 0.34479 -0.011 0.9910
FACILITY_LOCATION_FEast North Central -0.07526 0.42727 -0.176 0.8625
FACILITY_LOCATION_FEast South Central -0.36461 0.53774 -0.678 0.5081
FACILITY_LOCATION_FWest North Central -0.39974 0.41324 -0.967 0.3487
FACILITY_LOCATION_FWest South Central 0.13745 0.84980 0.162 0.8737
FACILITY_LOCATION_FMountain -0.08449 0.55705 -0.152 0.8815
FACILITY_LOCATION_FPacific -0.05542 0.57272 -0.097 0.9242
EDUCATION_F13 - 20.9% -0.29076 0.33266 -0.874 0.3959
EDUCATION_F7 - 12.9% -0.12843 0.34564 -0.372 0.7154
EDUCATION_FLess than 7% -0.30465 0.33256 -0.916 0.3741
EXPN_GROUPPre-Expansion 0.20932 0.45013 0.465 0.6486
YEAR_OF_DIAGNOSIS2005 -0.12152 0.71302 -0.170 0.8670
YEAR_OF_DIAGNOSIS2006 -0.31982 0.63234 -0.506 0.6204
YEAR_OF_DIAGNOSIS2007 -0.04065 0.66901 -0.061 0.9524
YEAR_OF_DIAGNOSIS2008 -0.15358 0.52718 -0.291 0.7748
YEAR_OF_DIAGNOSIS2009 0.37437 0.60371 0.620 0.5445
YEAR_OF_DIAGNOSIS2010 -0.45925 0.73184 -0.628 0.5398
YEAR_OF_DIAGNOSIS2011 -0.24787 0.76504 -0.324 0.7504
YEAR_OF_DIAGNOSIS2013 -0.85033 1.11790 -0.761 0.4587
YEAR_OF_DIAGNOSIS2015 0.16453 0.60309 0.273 0.7887
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.2478883)
Null deviance: 12.8679 on 52 degrees of freedom
Residual deviance: 3.7183 on 15 degrees of freedom
(31 observations deleted due to missingness)
AIC: 87.585
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_chemo), confint.default(fit_chemo, level = 0.95)))
Odds ratio 2.5 % 97.5 %
(Intercept) 7.3912286 1.27006357 43.0138004
AGE_F(54,64] 0.8488120 0.50529391 1.4258669
AGE_F(64,74] 0.4220337 0.15916296 1.1190568
AGE_F(74,100] 0.9201681 0.32877013 2.5753838
PRIMARY_SITEC445 0.4885932 0.12030224 1.9843633
PRIMARY_SITEC446 0.2791103 0.05635757 1.3822910
PRIMARY_SITEC447 0.4085841 0.11739935 1.4219926
PRIMARY_SITEC448 0.7249425 0.23224692 2.2628574
PRIMARY_SITEC449 0.6634090 0.20667874 2.1294475
GRADE_FNA/Unkown 0.5659750 0.29098687 1.1008320
SEX_FFemale 1.2017000 0.66676877 2.1657928
RACE_FBlack 0.5026035 0.29640646 0.8522429
INSURANCE_FMedicaid 0.8585878 0.29777753 2.4755832
INSURANCE_FMedicare 1.0917480 0.58072689 2.0524513
INSURANCE_FUnknown 0.8154247 0.18610491 3.5728093
FACILITY_TYPE_FAcademic/Research Program 0.7603235 0.35447381 1.6308448
FACILITY_TYPE_FIntegrated Network Ca Program 0.4882528 0.20163764 1.1822731
FACILITY_LOCATION_FMiddle Atlantic 0.7707182 0.39920645 1.4879684
FACILITY_LOCATION_FSouth Atlantic 0.9960476 0.50675367 1.9577771
FACILITY_LOCATION_FEast North Central 0.9275004 0.40144129 2.1429212
FACILITY_LOCATION_FEast South Central 0.6944660 0.24206125 1.9924005
FACILITY_LOCATION_FWest North Central 0.6704918 0.29829177 1.5071124
FACILITY_LOCATION_FWest South Central 1.1473497 0.21694298 6.0680062
FACILITY_LOCATION_FMountain 0.9189768 0.30841861 2.7382210
FACILITY_LOCATION_FPacific 0.9460884 0.30791797 2.9068884
EDUCATION_F13 - 20.9% 0.7476923 0.38954747 1.4351108
EDUCATION_F7 - 12.9% 0.8794780 0.44670238 1.7315368
EDUCATION_FLess than 7% 0.7373786 0.38425018 1.4150344
EXPN_GROUPPre-Expansion 1.2328341 0.51021236 2.9789164
YEAR_OF_DIAGNOSIS2005 0.8855733 0.21892623 3.5822118
YEAR_OF_DIAGNOSIS2006 0.7262821 0.21030842 2.5081529
YEAR_OF_DIAGNOSIS2007 0.9601645 0.25875129 3.5629420
YEAR_OF_DIAGNOSIS2008 0.8576294 0.30518321 2.4101200
YEAR_OF_DIAGNOSIS2009 1.4540755 0.44536149 4.7474592
YEAR_OF_DIAGNOSIS2010 0.6317595 0.15052597 2.6515029
YEAR_OF_DIAGNOSIS2011 0.7804593 0.17423972 3.4958549
YEAR_OF_DIAGNOSIS2013 0.4272722 0.04776933 3.8217311
YEAR_OF_DIAGNOSIS2015 1.1788359 0.36149635 3.8441721
Radiation
no_Ukns <- data %>%
filter(RADIATION_YN != "Ukn") %>%
droplevels() %>%
mutate(RADIATION_YN = fct_recode(RADIATION_YN,
"0" = "No",
"1" = "Yes"))%>%
mutate(RADIATION_YN = as.integer(RADIATION_YN)) %>%
mutate(RADIATION_YN = RADIATION_YN - 1)
fit_rads <- glm(RADIATION_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
data = no_Ukns)
summary(fit_rads)
Call:
glm(formula = RADIATION_YN ~ AGE_F + PRIMARY_SITE + GRADE_F +
SEX_F + RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.40694 -0.16785 -0.00875 0.10872 0.49187
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.604198 0.755476 0.800 0.436
AGE_F(54,64] -0.148317 0.222495 -0.667 0.515
AGE_F(64,74] -0.718233 0.418292 -1.717 0.107
AGE_F(74,100] -0.258984 0.441473 -0.587 0.566
PRIMARY_SITEC445 -0.271343 0.601181 -0.451 0.658
PRIMARY_SITEC446 0.263018 0.686271 0.383 0.707
PRIMARY_SITEC447 -0.287635 0.534949 -0.538 0.599
PRIMARY_SITEC448 -0.261377 0.488269 -0.535 0.600
PRIMARY_SITEC449 -0.431886 0.500251 -0.863 0.402
GRADE_FNA/Unkown -0.225547 0.285367 -0.790 0.442
SEX_FFemale 0.056522 0.252672 0.224 0.826
RACE_FBlack -0.342715 0.226515 -1.513 0.151
INSURANCE_FMedicaid 0.191840 0.454232 0.422 0.679
INSURANCE_FMedicare 0.191669 0.270776 0.708 0.490
INSURANCE_FUnknown 0.031174 0.633728 0.049 0.961
FACILITY_TYPE_FAcademic/Research Program 0.071253 0.327335 0.218 0.831
FACILITY_TYPE_FIntegrated Network Ca Program -0.353805 0.379345 -0.933 0.366
FACILITY_LOCATION_FMiddle Atlantic -0.369969 0.282181 -1.311 0.210
FACILITY_LOCATION_FSouth Atlantic 0.002143 0.289871 0.007 0.994
FACILITY_LOCATION_FEast North Central -0.391668 0.359215 -1.090 0.293
FACILITY_LOCATION_FEast South Central -0.642847 0.452091 -1.422 0.176
FACILITY_LOCATION_FWest North Central -0.470100 0.347422 -1.353 0.196
FACILITY_LOCATION_FWest South Central -0.161010 0.714446 -0.225 0.825
FACILITY_LOCATION_FMountain -0.567683 0.468327 -1.212 0.244
FACILITY_LOCATION_FPacific -0.490935 0.481496 -1.020 0.324
EDUCATION_F13 - 20.9% -0.009606 0.279677 -0.034 0.973
EDUCATION_F7 - 12.9% -0.046867 0.290585 -0.161 0.874
EDUCATION_FLess than 7% 0.083789 0.279592 0.300 0.769
EXPN_GROUPPre-Expansion 0.353126 0.378437 0.933 0.366
YEAR_OF_DIAGNOSIS2005 0.064228 0.599456 0.107 0.916
YEAR_OF_DIAGNOSIS2006 -0.328018 0.531623 -0.617 0.546
YEAR_OF_DIAGNOSIS2007 -0.019415 0.562454 -0.035 0.973
YEAR_OF_DIAGNOSIS2008 -0.198592 0.443215 -0.448 0.661
YEAR_OF_DIAGNOSIS2009 -0.057146 0.507549 -0.113 0.912
YEAR_OF_DIAGNOSIS2010 -0.367531 0.615272 -0.597 0.559
YEAR_OF_DIAGNOSIS2011 0.008894 0.643187 0.014 0.989
YEAR_OF_DIAGNOSIS2013 -0.248602 0.939843 -0.265 0.795
YEAR_OF_DIAGNOSIS2015 0.380001 0.507031 0.749 0.465
(Dispersion parameter for gaussian family taken to be 0.1752116)
Null deviance: 6.0755 on 52 degrees of freedom
Residual deviance: 2.6282 on 15 degrees of freedom
(33 observations deleted due to missingness)
AIC: 69.195
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_rads), confint.default(fit_rads, level = 0.95)))
Odds ratio 2.5 % 97.5 %
(Intercept) 1.8297836 0.4162338 8.043815
AGE_F(54,64] 0.8621574 0.5574408 1.333443
AGE_F(64,74] 0.4876133 0.2147953 1.106946
AGE_F(74,100] 0.7718355 0.3248945 1.833611
PRIMARY_SITEC445 0.7623553 0.2346556 2.476760
PRIMARY_SITEC446 1.3008497 0.3389005 4.993235
PRIMARY_SITEC447 0.7500351 0.2628647 2.140085
PRIMARY_SITEC448 0.7699909 0.2957132 2.004936
PRIMARY_SITEC449 0.6492832 0.2435676 1.730807
GRADE_FNA/Unkown 0.7980793 0.4561848 1.396212
SEX_FFemale 1.0581502 0.6448707 1.736289
RACE_FBlack 0.7098408 0.4553561 1.106549
INSURANCE_FMedicaid 1.2114767 0.4973615 2.950924
INSURANCE_FMedicare 1.2112700 0.7124528 2.059329
INSURANCE_FUnknown 1.0316648 0.2979259 3.572473
FACILITY_TYPE_FAcademic/Research Program 1.0738527 0.5653492 2.039730
FACILITY_TYPE_FIntegrated Network Ca Program 0.7020120 0.3337683 1.476536
FACILITY_LOCATION_FMiddle Atlantic 0.6907555 0.3973115 1.200930
FACILITY_LOCATION_FSouth Atlantic 1.0021452 0.5677960 1.768760
FACILITY_LOCATION_FEast North Central 0.6759286 0.3342999 1.366676
FACILITY_LOCATION_FEast South Central 0.5257933 0.2167675 1.275369
FACILITY_LOCATION_FWest North Central 0.6249400 0.3163092 1.234710
FACILITY_LOCATION_FWest South Central 0.8512837 0.2098633 3.453124
FACILITY_LOCATION_FMountain 0.5668372 0.2263692 1.419382
FACILITY_LOCATION_FPacific 0.6120539 0.2381988 1.572678
EDUCATION_F13 - 20.9% 0.9904401 0.5724884 1.713522
EDUCATION_F7 - 12.9% 0.9542141 0.5398824 1.686524
EDUCATION_FLess than 7% 1.0873997 0.6286372 1.880955
EXPN_GROUPPre-Expansion 1.4235106 0.6780071 2.988733
YEAR_OF_DIAGNOSIS2005 1.0663355 0.3293336 3.452643
YEAR_OF_DIAGNOSIS2006 0.7203503 0.2541120 2.042031
YEAR_OF_DIAGNOSIS2007 0.9807723 0.3256919 2.953449
YEAR_OF_DIAGNOSIS2008 0.8198842 0.3439433 1.954421
YEAR_OF_DIAGNOSIS2009 0.9444563 0.3492653 2.553926
YEAR_OF_DIAGNOSIS2010 0.6924422 0.2073302 2.312620
YEAR_OF_DIAGNOSIS2011 1.0089340 0.2860097 3.559138
YEAR_OF_DIAGNOSIS2013 0.7798901 0.1236055 4.920722
YEAR_OF_DIAGNOSIS2015 1.4622858 0.5413113 3.950185
Immunotherapy
no_Ukns <- data %>%
filter(IMMUNO_YN != "Ukn") %>%
droplevels() %>%
mutate(IMMUNO_YN = fct_recode(IMMUNO_YN,
"0" = "No",
"1" = "Yes"))%>%
mutate(IMMUNO_YN = as.integer(IMMUNO_YN)) %>%
mutate(IMMUNO_YN = IMMUNO_YN - 1)
fit_immuno <- glm(IMMUNO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
data = no_Ukns)
summary(fit_immuno)
Call:
glm(formula = IMMUNO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F +
RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.42930 -0.08007 0.00906 0.08007 0.34648
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.45793 0.43194 1.060 0.30585
AGE_F(54,64] -0.05740 0.12721 -0.451 0.65830
AGE_F(64,74] -0.56508 0.23916 -2.363 0.03207 *
AGE_F(74,100] -0.13588 0.25241 -0.538 0.59824
PRIMARY_SITEC445 0.05963 0.34373 0.173 0.86460
PRIMARY_SITEC446 0.52423 0.39238 1.336 0.20146
PRIMARY_SITEC447 -0.14283 0.30586 -0.467 0.64722
PRIMARY_SITEC448 -0.03085 0.27917 -0.111 0.91347
PRIMARY_SITEC449 0.25052 0.28602 0.876 0.39491
GRADE_FNA/Unkown -0.15044 0.16316 -0.922 0.37109
SEX_FFemale -0.07322 0.14447 -0.507 0.61966
RACE_FBlack -0.10012 0.12951 -0.773 0.45148
INSURANCE_FNone 0.47545 0.58105 0.818 0.42602
INSURANCE_FMedicaid -0.14343 0.25971 -0.552 0.58890
INSURANCE_FMedicare 0.09517 0.15482 0.615 0.54793
INSURANCE_FUnknown -0.36743 0.36234 -1.014 0.32663
FACILITY_TYPE_FAcademic/Research Program 0.41737 0.18715 2.230 0.04144 *
FACILITY_TYPE_FIntegrated Network Ca Program 0.02351 0.21689 0.108 0.91512
FACILITY_LOCATION_FMiddle Atlantic -0.43854 0.16134 -2.718 0.01587 *
FACILITY_LOCATION_FSouth Atlantic 0.04140 0.16573 0.250 0.80612
FACILITY_LOCATION_FEast North Central -0.36071 0.20538 -1.756 0.09943 .
FACILITY_LOCATION_FEast South Central -0.23066 0.25848 -0.892 0.38630
FACILITY_LOCATION_FWest North Central -0.34459 0.19864 -1.735 0.10328
FACILITY_LOCATION_FWest South Central -0.81450 0.40849 -1.994 0.06467 .
FACILITY_LOCATION_FMountain -0.30458 0.26777 -1.137 0.27318
FACILITY_LOCATION_FPacific -0.84983 0.27530 -3.087 0.00751 **
EDUCATION_F13 - 20.9% -0.27240 0.15991 -1.703 0.10910
EDUCATION_F7 - 12.9% -0.46211 0.16614 -2.781 0.01397 *
EDUCATION_FLess than 7% -0.14858 0.15986 -0.929 0.36738
EXPN_GROUPPre-Expansion -0.05811 0.21637 -0.269 0.79194
YEAR_OF_DIAGNOSIS2005 -0.35005 0.34274 -1.021 0.32329
YEAR_OF_DIAGNOSIS2006 -0.09693 0.30396 -0.319 0.75421
YEAR_OF_DIAGNOSIS2007 0.02192 0.32158 0.068 0.94655
YEAR_OF_DIAGNOSIS2008 0.11160 0.25341 0.440 0.66592
YEAR_OF_DIAGNOSIS2009 0.06434 0.29019 0.222 0.82754
YEAR_OF_DIAGNOSIS2010 -0.11559 0.35178 -0.329 0.74702
YEAR_OF_DIAGNOSIS2011 0.01424 0.36774 0.039 0.96962
YEAR_OF_DIAGNOSIS2013 0.15445 0.53736 0.287 0.77772
YEAR_OF_DIAGNOSIS2015 -0.21103 0.28990 -0.728 0.47786
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.05727668)
Null deviance: 4.53704 on 53 degrees of freedom
Residual deviance: 0.85915 on 15 degrees of freedom
(33 observations deleted due to missingness)
AIC: 9.6424
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_immuno), confint.default(fit_immuno, level = 0.95)))
Odds ratio 2.5 % 97.5 %
(Intercept) 1.5807952 0.6779593 3.6859344
AGE_F(54,64] 0.9442190 0.7358512 1.2115896
AGE_F(64,74] 0.5683168 0.3556459 0.9081617
AGE_F(74,100] 0.8729442 0.5322703 1.4316628
PRIMARY_SITEC445 1.0614409 0.5411470 2.0819792
PRIMARY_SITEC446 1.6891503 0.7828468 3.6446836
PRIMARY_SITEC447 0.8668988 0.4760161 1.5787566
PRIMARY_SITEC448 0.9696215 0.5610140 1.6758331
PRIMARY_SITEC449 1.2846905 0.7333956 2.2503947
GRADE_FNA/Unkown 0.8603279 0.6248597 1.1845283
SEX_FFemale 0.9294008 0.7002187 1.2335944
RACE_FBlack 0.9047252 0.7019034 1.1661543
INSURANCE_FNone 1.6087408 0.5150996 5.0243626
INSURANCE_FMedicaid 0.8663820 0.5207697 1.4413623
INSURANCE_FMedicare 1.0998492 0.8119944 1.4897495
INSURANCE_FUnknown 0.6925096 0.3404126 1.4087893
FACILITY_TYPE_FAcademic/Research Program 1.5179597 1.0518511 2.1906157
FACILITY_TYPE_FIntegrated Network Ca Program 1.0237885 0.6692555 1.5661328
FACILITY_LOCATION_FMiddle Atlantic 0.6449760 0.4701243 0.8848597
FACILITY_LOCATION_FSouth Atlantic 1.0422711 0.7531953 1.4422938
FACILITY_LOCATION_FEast North Central 0.6971790 0.4661470 1.0427154
FACILITY_LOCATION_FEast South Central 0.7940099 0.4784140 1.3177953
FACILITY_LOCATION_FWest North Central 0.7085102 0.4800252 1.0457509
FACILITY_LOCATION_FWest South Central 0.4428624 0.1988680 0.9862174
FACILITY_LOCATION_FMountain 0.7374332 0.4363139 1.2463682
FACILITY_LOCATION_FPacific 0.4274876 0.2492247 0.7332567
EDUCATION_F13 - 20.9% 0.7615520 0.5566567 1.0418654
EDUCATION_F7 - 12.9% 0.6299512 0.4548687 0.8724244
EDUCATION_FLess than 7% 0.8619349 0.6300917 1.1790851
EXPN_GROUPPre-Expansion 0.9435500 0.6174312 1.4419204
YEAR_OF_DIAGNOSIS2005 0.7046517 0.3599430 1.3794797
YEAR_OF_DIAGNOSIS2006 0.9076231 0.5002387 1.6467732
YEAR_OF_DIAGNOSIS2007 1.0221665 0.5442382 1.9197922
YEAR_OF_DIAGNOSIS2008 1.1180687 0.6804030 1.8372605
YEAR_OF_DIAGNOSIS2009 1.0664504 0.6038497 1.8834431
YEAR_OF_DIAGNOSIS2010 0.8908433 0.4470572 1.7751687
YEAR_OF_DIAGNOSIS2011 1.0143429 0.4933567 2.0854923
YEAR_OF_DIAGNOSIS2013 1.1670168 0.4070787 3.3456145
YEAR_OF_DIAGNOSIS2015 0.8097525 0.4587676 1.4292620
Any Treatment
summary(fit_tx)
Call:
glm(formula = Tx_YN ~ AGE_F + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + YEAR_OF_DIAGNOSIS,
data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.45799 -0.13361 -0.01202 0.14925 0.39744
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.27424 0.40729 5.584 1.53e-05 ***
AGE_F(54,64] -0.05998 0.15781 -0.380 0.707705
AGE_F(64,74] -0.78672 0.31144 -2.526 0.019638 *
AGE_F(74,100] -0.43440 0.25977 -1.672 0.109306
GRADE_FNA/Unkown -0.55646 0.21282 -2.615 0.016187 *
SEX_FFemale 0.27535 0.14743 1.868 0.075834 .
RACE_FBlack -0.64201 0.15120 -4.246 0.000361 ***
INSURANCE_FMedicaid -0.23785 0.30471 -0.781 0.443756
INSURANCE_FMedicare -0.08488 0.17937 -0.473 0.640956
INSURANCE_FUnknown -0.33162 0.37546 -0.883 0.387098
FACILITY_TYPE_FAcademic/Research Program -0.25342 0.20486 -1.237 0.229735
FACILITY_TYPE_FIntegrated Network Ca Program -1.02253 0.25231 -4.053 0.000573 ***
FACILITY_LOCATION_FMiddle Atlantic -0.54826 0.19398 -2.826 0.010114 *
FACILITY_LOCATION_FSouth Atlantic 0.06924 0.20473 0.338 0.738580
FACILITY_LOCATION_FEast North Central -0.52293 0.23909 -2.187 0.040186 *
FACILITY_LOCATION_FEast South Central -0.71906 0.29082 -2.473 0.022045 *
FACILITY_LOCATION_FWest North Central -0.66799 0.24398 -2.738 0.012328 *
FACILITY_LOCATION_FWest South Central -0.33485 0.38436 -0.871 0.393497
FACILITY_LOCATION_FMountain -0.57997 0.33930 -1.709 0.102129
FACILITY_LOCATION_FPacific -0.17576 0.27394 -0.642 0.528065
EDUCATION_F13 - 20.9% -0.45986 0.17247 -2.666 0.014448 *
EDUCATION_F7 - 12.9% 0.13357 0.20340 0.657 0.518514
EDUCATION_FLess than 7% -0.19641 0.19935 -0.985 0.335711
YEAR_OF_DIAGNOSIS2005 -0.21050 0.32125 -0.655 0.519414
YEAR_OF_DIAGNOSIS2006 -0.86556 0.29413 -2.943 0.007773 **
YEAR_OF_DIAGNOSIS2007 -0.74730 0.33090 -2.258 0.034688 *
YEAR_OF_DIAGNOSIS2008 -0.16055 0.28566 -0.562 0.580052
YEAR_OF_DIAGNOSIS2009 0.07102 0.32360 0.219 0.828415
YEAR_OF_DIAGNOSIS2010 -0.92394 0.35724 -2.586 0.017223 *
YEAR_OF_DIAGNOSIS2011 -0.99983 0.39351 -2.541 0.019021 *
YEAR_OF_DIAGNOSIS2013 -0.82151 0.48653 -1.688 0.106112
YEAR_OF_DIAGNOSIS2015 -0.11529 0.32633 -0.353 0.727388
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.1023929)
Null deviance: 8.7170 on 52 degrees of freedom
Residual deviance: 2.1503 on 21 degrees of freedom
(31 observations deleted due to missingness)
AIC: 46.558
Number of Fisher Scoring iterations: 2
LS0tCnRpdGxlOiAiU3ViY3V0YW5lb3VzIFBhbm5pY3VsaXRpcy1saWtlIFQtY2VsbCBMeW1waG9tYSBBbmFseXNpcyIKYXV0aG9yOiAiUmFtaWUgRmF0aHkiCmRhdGU6ICIxMi8xNi8yMDE5IgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRoZW1lOiB1bml0ZWQKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQoKbGlicmFyeSgiZ2dwbG90MiIpCmxpYnJhcnkoImRwbHlyIikKbGlicmFyeSgidGlkeXIiKQpsaWJyYXJ5KCJrbml0ciIpCmxpYnJhcnkoInRhYmxlb25lIikKbGlicmFyeSgiZm9yY2F0cyIpCmxpYnJhcnkoInN1cnZpdmFsIikKbGlicmFyeSgibnBzdXJ2IikKbGlicmFyeSgiYnJvb20iKQpsaWJyYXJ5KCJ0aWJibGUiKQpsaWJyYXJ5KCJyZWFkciIpCmxpYnJhcnkoInN1cnZtaW5lciIpCmxpYnJhcnkoInN0cmluZ3IiKQoKCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9VFJVRSkKJyUhaW4lJyA8LSBmdW5jdGlvbih4LHkpISgnJWluJScoeCx5KSkKYGBgCgpgYGB7cn0KcF90YWJsZSA8LSBmdW5jdGlvbih0YWJfZGF0YSwgLi4uKSB7CiAgdGFiX2RhdGFfMiA8LSBkZXBhcnNlKHN1YnN0aXR1dGUodGFiX2RhdGEpKQogIAogIHRhYmxlX3AgPC0gZG8uY2FsbChDcmVhdGVUYWJsZU9uZSwgCiAgICAgICAgICAgICAgICAgICAgIGxpc3QoZGF0YSA9IGFzLm5hbWUodGFiX2RhdGFfMiksIGluY2x1ZGVOQSA9IFRSVUUsIC4uLikpCiAgdGFibGVfcF9vdXQgPC0gcHJpbnQodGFibGVfcCwKICAgICAgICAgICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICBwcmludFRvZ2dsZSA9IEZBTFNFKQogIGthYmxlKHRhYmxlX3Bfb3V0LAogICAgICAgIGFsaWduID0gImMiKQp9CmBgYAoKYGBge3J9CnVuaV92YXIgPC0gZnVuY3Rpb24odGVzdF92YXIsIGRhdGFfaW1wKSB7CgogICAgICAgICAgICAgICAgCiAgICAgICAgY2F0KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICAKICAgICAgICBmIDwtIGFzLmZvcm11bGEocGFzdGUoIlN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMubmFtZSh0ZXN0X3ZhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICIgfiAiICkpCiAgICAgICAgCiAgICAgICAgZGF0YV9pbXBfMiA8LSBkZXBhcnNlKHN1YnN0aXR1dGUoZGF0YV9pbXApKQoKICAgICAgICBrbV9maXQgPC0gZG8uY2FsbCgic3VydmZpdCIsIGxpc3QoZm9ybXVsYSA9IGYsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCiAgICAgICAgcHJpbnQoa21fZml0KQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICBwcmludChzdW1tYXJ5KGttX2ZpdCwgdGltZXMgPSBjKDEyLCAyNCwgMzYsIDQ4LCA2MCwgMTIwKSkpCiAgICAgICAgY2F0KCJcbiIpCgoKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMgVW5pdmFyaWFibGUgQ294IFByb3BvcnRpb25hbCBIYXphcmQgTW9kZWwgZm9yOiAiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKCgogICAgICAgIG5fbGV2ZWxzIDwtIG5sZXZlbHMoZGF0YV9pbXBbW3Rlc3RfdmFyXV0pCgogICAgICAgIGlmKG5fbGV2ZWxzID09IDEpewogICAgICAgICAgICAgICAgcHJpbnQoIk9ubHkgb25lIGxldmVsLCBubyBDb3ggbW9kZWwgcGVyZm9ybWVkIikKICAgICAgICAgICAgICAgIGNhdCgiXG4iKQoKICAgICAgICB9IGVsc2UgewoKCiAgICAgICAgICAgICAgICBjb3hfZml0IDwtIGRvLmNhbGwoImNveHBoIiwgbGlzdChmb3JtdWxhID0gZiwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMikpKQoKICAgICAgICAgICAgICAgIHByaW50KHN1bW1hcnkoY294X2ZpdCkpCiAgICAgICAgICAgICAgICBjYXQoIlxuIikKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZG8uY2FsbCgiZ2dmb3Jlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChtb2RlbCA9IGNveF9maXQsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCgogICAgICAgIH0KCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCIgICBcbiMjIFVuYWRqdXN0ZWQgS2FwbGFuIE1laWVyIE92ZXJhbGwgU3Vydml2YWwgQ3VydmUgZm9yOiAiLCB0ZXN0X3ZhcikKCgogICAgICAgIHAgPC0gZG8uY2FsbCgiZ2dzdXJ2cGxvdCIsCiAgICAgICAgICAgICAgICAgICAgIGxpc3QoZml0ID0ga21fZml0LCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsIGNlbnNvciA9IEZBTFNFLCBsZWdlbmQgPSAicmlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmV0eXBlID0gInN0cmF0YSIsIHhsYWIgPSAiVGltZSAoTW9udGhzKSIpKQoKICAgICAgICBwcmludChwKQoKfQoKYGBgCgpgYGB7ciBjaHVuazIsIGNhY2hlPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHJlc3VsdHM9J2hpZGUnfQpjb2wud2lkdGggPC0gYygzNywgMTAsIDEsIDEsIDMsIDEsIDIsIDEsIDIsIDEsIDEsIDEsIDEsIDEsIDEsIDgsIDIsIDIsIDIsIDQsIDQsIDEsIDQsIDEsIDEsCiAgICAgICAgICAgICAgIDEsIDMsIDIsIDIsIDgsIDIsIDUsIDUsIDUsIDQsIDUsIDUsIDUsNCwgMiwgMSwgMiwgMSwgMywgMSwgMSwgMSwgMSwgMSwgMSwgMywKICAgICAgICAgICAgICAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgNiwgOCwKICAgICAgICAgICAgICAgOCwgOCwgMiwgMSwgMSwgMSwgMSwgOCwgMSwgMSwgOCwgMSwgMSwgMiwgMiwgNSwgMiwgNSwgMywgMSwgMywgMSwgOCwgOCwgMiwgOCwKICAgICAgICAgICAgICAgMiwgOCwgMiwgMiwgMSwgOCwgMSwgMSwgMSwgMSwgMSwgOCwgMSwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMiwgMSwgMywgMSwgMSwKICAgICAgICAgICAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSkKCmNvbC5uYW1lcy5hYnIgPC0gYygiUFVGX0NBU0VfSUQiLCAiUFVGX0ZBQ0lMSVRZX0lEIiwgIkZBQ0lMSVRZX1RZUEVfQ0QiLCAiRkFDSUxJVFlfTE9DQVRJT05fQ0QiLAogICAgICAgICAgICAgICAgICAgIkFHRSIsICJTRVgiLCAiUkFDRSIsICJTUEFOSVNIX0hJU1BBTklDX09SSUdJTiIsICJJTlNVUkFOQ0VfU1RBVFVTIiwKICAgICAgICAgICAgICAgICAgICJNRURfSU5DX1FVQVJfMDAiLCAiTk9fSFNEX1FVQVJfMDAiLCAiVVJfQ0RfMDMiLCAiTUVEX0lOQ19RVUFSXzEyIiwgIk5PX0hTRF9RVUFSXzEyIiwKICAgICAgICAgICAgICAgICAgICJVUl9DRF8xMyIsICJDUk9XRkxZIiwgIkNEQ0NfVE9UQUxfQkVTVCIsICJTRVFVRU5DRV9OVU1CRVIiLCAiQ0xBU1NfT0ZfQ0FTRSIsCiAgICAgICAgICAgICAgICAgICAiWUVBUl9PRl9ESUFHTk9TSVMiLCAiUFJJTUFSWV9TSVRFIiwgIkxBVEVSQUxJVFkiLCAiSElTVE9MT0dZIiwgIkJFSEFWSU9SIiwgIkdSQURFIiwKICAgICAgICAgICAgICAgICAgICJESUFHTk9TVElDX0NPTkZJUk1BVElPTiIsICJUVU1PUl9TSVpFIiwgIlJFR0lPTkFMX05PREVTX1BPU0lUSVZFIiwKICAgICAgICAgICAgICAgICAgICJSRUdJT05BTF9OT0RFU19FWEFNSU5FRCIsICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJSWF9TVU1NX0RYU1RHX1BST0MiLCAiVE5NX0NMSU5fVCIsCiAgICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAgICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsICJUTk1fRURJVElPTl9OVU1CRVIiLCAiQU5BTFlUSUNfU1RBR0VfR1JPVVAiLCAiQ1NfTUVUU19BVF9EWCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfTUVUU19FVkFMIiwgIkNTX0VYVEVOU0lPTiIsICJDU19UVU1PUl9TSVpFRVhUX0VWQUwiLCAiQ1NfTUVUU19EWF9CT05FIiwgIkNTX01FVFNfRFhfQlJBSU4iLAogICAgICAgICAgICAgICAgICAgIkNTX01FVFNfRFhfTElWRVIiLCAiQ1NfTUVUU19EWF9MVU5HIiwgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMyIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzQiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzYiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl83IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzgiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl85IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTAiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTEiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEzIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE0IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTUiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNyIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE4IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTkiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjAiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIyIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIzIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjQiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yNSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfVkVSU0lPTl9MQVRFU1QiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1NVUkdfUFJJTV9TSVRFIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTAiLCAiUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1NDT1BFX1JFR19MTl9TVVIiLCAiUlhfU1VNTV9TVVJHX09USF9SRUdESVMiLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsICJSRUFETV9IT1NQXzMwX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJFQVNPTl9GT1JfTk9fU1VSR0VSWSIsICJEWF9SQURfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fUkFESUFUSU9OIiwgIlJBRF9MT0NBVElPTl9PRl9SWCIsCiAgICAgICAgICAgICAgICAgICAiUkFEX1RSRUFUX1ZPTCIsICJSQURfUkVHSU9OQUxfUlhfTU9EQUxJVFkiLCAiUkFEX1JFR0lPTkFMX0RPU0VfQ0dZIiwgIlJBRF9CT09TVF9SWF9NT0RBTElUWSIsCiAgICAgICAgICAgICAgICAgICAiUkFEX0JPT1NUX0RPU0VfQ0dZIiwgIlJBRF9OVU1fVFJFQVRfVk9MIiwgIlJYX1NVTU1fU1VSR1JBRF9TRVEiLCAiUkFEX0VMQVBTRURfUlhfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUkVBU09OX0ZPUl9OT19SQURJQVRJT04iLCAiRFhfU1lTVEVNSUNfU1RBUlRFRF9EQVlTIiwgIkRYX0NIRU1PX1NUQVJURURfREFZUyIsICJSWF9TVU1NX0NIRU1PIiwKICAgICAgICAgICAgICAgICAgICJEWF9IT1JNT05FX1NUQVJURURfREFZUyIsICJSWF9TVU1NX0hPUk1PTkUiLCAiRFhfSU1NVU5PX1NUQVJURURfREFZUyIsICJSWF9TVU1NX0lNTVVOT1RIRVJBUFkiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fVFJOU1BMTlRfRU5ETyIsICJSWF9TVU1NX1NZU1RFTUlDX1NVUl9TRVEiLCAiRFhfT1RIRVJfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fT1RIRVIiLAogICAgICAgICAgICAgICAgICAgIlBBTExJQVRJVkVfQ0FSRSIsICJSWF9TVU1NX1RSRUFUTUVOVF9TVEFUVVMiLCAiUFVGXzMwX0RBWV9NT1JUX0NEIiwgIlBVRl85MF9EQVlfTU9SVF9DRCIsCiAgICAgICAgICAgICAgICAgICAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgIlBVRl9WSVRBTF9TVEFUVVMiLCAiUlhfSE9TUF9TVVJHX1BSSU1fU0lURSIsICJSWF9IT1NQX0NIRU1PIiwKICAgICAgICAgICAgICAgICAgICJSWF9IT1NQX0lNTVVOT1RIRVJBUFkiLCAiUlhfSE9TUF9IT1JNT05FIiwgIlJYX0hPU1BfT1RIRVIiLCAiUFVGX01VTFRfU09VUkNFIiwgIlJFRkVSRU5DRV9EQVRFX0ZMQUciLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU0NPUEVfUkVHX0xOXzIwMTIiLCAiUlhfSE9TUF9EWFNUR19QUk9DIiwgIlBBTExJQVRJVkVfQ0FSRV9IT1NQIiwgIlRVTU9SX1NJWkVfU1VNTUFSWSIsCiAgICAgICAgICAgICAgICAgICAiTUVUU19BVF9EWF9PVEhFUiIsICJNRVRTX0FUX0RYX0RJU1RBTlRfTE4iLCAiTUVUU19BVF9EWF9CT05FIiwgIk1FVFNfQVRfRFhfQlJBSU4iLAogICAgICAgICAgICAgICAgICAgIk1FVFNfQVRfRFhfTElWRVIiLCAiTUVUU19BVF9EWF9MVU5HIiwgIk5PX0hTRF9RVUFSXzE2IiwgIk1FRF9JTkNfUVVBUl8xNiIsICJNRURJQ0FJRF9FWFBOX0NPREUiKQoKCgojUmVhZCBpbiBkYXRhIGZvciBlYWNoIHN1YnNpdGUKbGlwIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0xpcC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgptZWxhbm9tYSA8LSByZWFkX2Z3ZignTkNEQlBVRl9NZWxhbm9tYS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgCnNraW4gPC0gcmVhZF9md2YoJ05DREJQVUZfT3RTa2luLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCmhvZGdleHRyIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0hvZGdFeHRyLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCmhvZGduZGFsIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0hvZGdOZGFsLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCk5ITG5kYWwgPC0gcmVhZF9md2YoJ05DREJQVUZfTkhMTmRhbC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpOSExleHRyIDwtIHJlYWRfZndmKCdOQ0RCUFVGX05ITEV4dHIuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKCmJyZWFzdCA8LSAgcmVhZF9md2YoJ05DREJQVUZfQnJlYXN0LjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnZ1bHZhIDwtICByZWFkX2Z3ZignTkNEQlBVRl9WdWx2YS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgp2YWdpbmEgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1ZhZ2luYS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpwZW5pcyA8LSAgcmVhZF9md2YoJ05DREJQVUZfUGVuaXMuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKb3RsZXVrIDwtIHJlYWRfZndmKCdOQ0RCUFVGX090TGV1ay4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCiAgCm90aGVyYWN1dGVsZXVrICA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdEFjTGV1ay4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCiAgCkFMTCAgPC0gcmVhZF9md2YoJ05DREJQVUZfQUx5bUxldWsuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKCiNDb21iaW5lIGRhdGEgZm9yIGFsbCBzdWJzaXRlcwpkYXQgPC0gYmluZF9yb3dzKGxpcCwgbWVsYW5vbWEsIHNraW4sIGhvZGdleHRyLCBob2RnbmRhbCwgTkhMbmRhbCwgYnJlYXN0LCAKICAgICAgICAgICAgICAgICB2dWx2YSwgdmFnaW5hLCBwZW5pcywgTkhMZXh0ciwgb3RsZXVrLCBvdGhlcmFjdXRlbGV1aywgQUxMKQoKcm0obGlwLCBtZWxhbm9tYSwgc2tpbiwgaG9kZ2V4dHIsIGhvZGduZGFsLCBOSExuZGFsLCBicmVhc3QsIHZ1bHZhLCB2YWdpbmEsIAogICBwZW5pcywgTkhMZXh0ciwgb3RsZXVrLCBvdGhlcmFjdXRlbGV1aywgQUxMKQoKcHJpbV9zaXRlX3RleHQgPC0gZGF0YV9mcmFtZShQUklNQVJZX1NJVEUgPSBjKAojTkhMIHNpdGVzCiJDMDAwIiwgCiJDMDAxIiwgCiJDMDAyIiwgCiJDMDAzIiwgCiJDMDA0IiwgCiJDMDA1IiwgCiJDMDA2IiwgCiJDMDA4IiwKIkMwMDkiLCAKIkMwMTkiLCAKIkMwMjAiLCAKIkMwMjEiLAoiQzAyMiIsIAoiQzAyMyIsIAoiQzAyNCIsIAoiQzAyOCIsIAoiQzAyOSIsCiJDMDMwIiwKIkMwMzEiLAoiQzAzOSIsIAoiQzA0MCIsIAoiQzA0MSIsIAoiQzA0OCIsCiJDMDQ5IiwgCiJDMDUwIiwgCiJDMDUxIiwgCiJDMDUyIiwgCiJDMDU4IiwgCiJDMDU5IiwKIkMwNjAiLCAKIkMwNjEiLCAKIkMwNjIiLCAKIkMwNjgiLCAKIkMwNjkiLCAKIkMwNzkiLCAgCiJDMDk4IiwKIkMwOTkiLAoiQzExMSIsCiJDMTQyIiwKIkMzMDAiLAoiQzM3OSIsCiJDNDIwIiwKIkM0MjIiLAoiQzQyNCIsCgojc2tpbi9tZWxhbm9tYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzQ0MCIsICJDNDQxIiwgIkM0NDIiLCAiQzQ0MyIsICJDNDQ0IiwgIkM0NDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzQ0NiIsICJDNDQ3IiwgIkM0NDgiLCAiQzQ0OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnJlYXN0IC0gbmlwcGxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNTAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2YWdpbmEvdnVsdmEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM1MTAiLCAiQzUxMSIsICJDNTEyIiwgIkM1MTgiLCAiQzUxOSIsICJDNTI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwZW5pcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzYwMCIsICJDNjAxIiwgIkM2MDIiLCAiQzYwOCIsICJDNjA5IiwgIkM2MzkiLAoKIkM3NzAiLAoiQzc3MSIsCiJDNzcyIiwKIkM3NzMiLAoiQzc3NCIsCiJDNzc1IiwKIkM3NzgiLAoiQzc3OSIpLAoKU0lURV9URVhUID0gYygKIkMwMC4wIEV4dGVybmFsIExpcDogVXBwZXIgTk9TIiwKIkMwMC4xIEV4dGVybmFsIExpcDogTG93ZXIgTk9TIiwKIkMwMC4yIEV4dGVybmFsIExpcDogTk9TIiwKIkMwMC4zIExpcDogVXBwZXIgTXVjb3NhIiwKIkMwMC40IExpcDogTG93ZXIgTXVjb3NhIiwKIkMwMC41IExpcDogTXVjb3NhIE5PUyIsCiJDMDAuNiBMaXA6IENvbW1pc3N1cmUiLAoiQzAwLjggTGlwOiBPdmVybGFwcGluZyIsCiJDMDAuOSBMaXAgTk9TIiwKIkMwMS45IFRvbmd1ZTogQmFzZSBOT1MiLAoiQzAyLjAgVG9uZ3VlOiBEb3JzYWwgTk9TIiwKIkMwMi4xIFRvbmd1ZTogQm9yZGVyLCBUaXAiLAoiQzAyLjIgVG9uZ3VlOiBWZW50cmFsIE5PUyIsCiJDMDIuMyBUb25ndWU6IEFudGVyaW9yIE5PUyIsCiJDMDIuNCBMaW5ndWFsIFRvbnNpbCIsCiJDMDIuOCBUb25ndWU6IE92ZXJsYXBwaW5nIiwKIkMwMi45IFRvbmd1ZTogTk9TIiwKIkMwMy4wIEd1bTogVXBwZXIiLAoiQzAzLjEgR3VtOiBMb3dlciIsCiJDMDMuOSBHdW0gTk9TIiwKIkMwNC4wIE1vdXRoOiBBbnRlcmlvciBGbG9vciIsCiJDMDQuMSBNb3V0aDogTGF0ZXJhbCBGbG9vciIsCiJDMDQuOCBNb3V0aDogT3ZlcmxhcHBpbmcgRmxvb3IiLAoiQzA0LjkgRmxvb3Igb2YgTW91dGggTk9TIiwKIkMwNS4wIEhhcmQgUGFsYXRlIiwKIkMwNS4xIFNvZnQgUGFsYXRlIE5PUyIsCiJDMDUuMiBVdnVsYSIsCiJDMDUuOCBQYWxhdGU6IE92ZXJsYXBwaW5nIiwKIkMwNS45IFBhbGF0ZSBOT1MiLAoiQzA2LjAgQ2hlZWsgTXVjb3NhIiwKIkMwNi4xIE1vdXRoOiBWZXN0aWJ1bGUiLAoiQzA2LjIgUmV0cm9tb2xhciBBcmVhIiwKIkMwNi44IE1vdXRoOiBPdGhlciBPdmVybGFwcGluZyIsCiJDMDYuOSBNb3V0aCBOT1MiLAoiQzA3LjkgUGFyb3RpZCBHbGFuZCIsCiAgIkMwOS44IFRvbnNpbDogT3ZlcmxhcHBpbmciLAogICJDMDkuOSBUb25zaWwgTk9TIiwKICAiQzExLjEgTmFzb3BoYXJ5bng6IFBvc3RlciBXYWxsIiwgCiAgIkMxNC4yIFdhbGRleWVyIFJpbmciLAogICJDMzAuMCBOYXNhbCBDYXZpdHkiLAogICJDMzcuOSBUaHltdXMiLAoiQzQyLjAgQmxvb2QiLAogICJDNDIuMiBTcGxlZW4iLAoiQzQyLjQgSGVtYXRvcG9pZXRpYyBOT1MiLAoKICNza2luCiJDNDQuMCBTa2luIG9mIGxpcCwgTk9TIiwKIkM0NC4xIEV5ZWxpZCIsCiJDNDQuMiBFeHRlcm5hbCBlYXIiLAoiQzQ0LjMgU2tpbiBvZiBlYXIgYW5kIHVuc3BlY2lmaWVkIHBhcnRzIG9mIGZhY2UiLAoiQzQ0LjQgU2tpbiBvZiBzY2FscCBhbmQgbmVjayIsCiJDNDQuNSBTa2luIG9mIHRydW5rIiwKIkM0NC42IFNraW4gb2YgdXBwZXIgbGltYiBhbmQgc2hvdWxkZXIiLAoiQzQ0LjcgU2tpbiBvZiBsb3dlciBsaW1iIGFuZCBoaXAiLAoiQzQ0LjggT3ZlcmxhcHBpbmcgbGVzaW9uIG9mIHNraW4iLAoiQzQ0LjkgU2tpbiwgTk9TIiwgCgojYnJlYXN0CiJDNTAuMCBOaXBwbGUiLAoKI3Z1bHZhL3ZhZ2luYQoiQzUxLjAgTGFiaXVtIG1hanVzIiwKIkM1MS4xIExhYml1bSBtaW51cyIsCiJDNTEuMiBDbGl0b3JpcyIsCiJDNTEuOCBPdmVybGFwcGluZyBsZXNpb24gb2YgdnVsdmEiLAoiQzUxLjkgVnVsdmEsIE5PUyIsCiJDNTIuOSBWYWdpbmEsIE5PUyIsCgojcGVuaXMKIkM2MC4wIFByZXB1Y2UiLAoiQzYwLjEgR2xhbnMgcGVuaXMiLAoiQzYwLjIgQm9keSBvZiBwZW5pcyIsCiJDNjAuOCBPdmVybGFwcGluZyBsZXNpb24gb2YgcGVuaXMiLAoiQzYwLjkgUGVuaXMiLAoiQzYzLjIgU2Nyb3R1bSwgTk9TIiwKCiAgIkM3Ny4wIEx5bXBoIE5vZGVzOiBIZWFkRmFjZU5lY2siLAogICJDNzcuMSBJbnRyYXRob3JhY2ljIEx5bXBoIE5vZGVzIiwKICAiQzc3LjIgSW50cmEtYWJkb21pbmFsIEx5bXBoTm9kZXMiLAogICJDNzcuMyBMeW1waCBOb2RlcyBvZiBheGlsbGEgb3IgYXJtICIsCiAgIkM3Ny40IEx5bXBoIE5vZGVzOiBMZWciLAogICJDNzcuNSBQZWx2aWMgTHltcGggTm9kZXMiLAogICJDNzcuOCBMeW1waCBOb2RlczogbXVsdGlwbGUgcmVnaW9uIiwKICAiQzc3LjkgTHltcGggTm9kZSBOT1MiKSkKCgpkYXQgPC0gbWVyZ2UoZGF0LCBwcmltX3NpdGVfdGV4dCwgYnkgPSAiUFJJTUFSWV9TSVRFIiwgYWxsLnggPSBUUlVFKSAKCnJtKHByaW1fc2l0ZV90ZXh0KQoKIyBjb252ZXJ0IG51bWVyaWMgdmFyaWFibGVzIGZyb20gY2hhcmFjdGVyIGNsYXNzIHRvIG51bWVyaWMgY2xhc3MKbnVtX3ZhcnMgPC0gYygiQUdFIiwgIkNST1dGTFkiLCAiVFVNT1JfU0laRSIsICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICJEWF9ERUZTVVJHX1NUQVJURURfREFZUyIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwgIkRYX1JBRF9TVEFSVEVEX0RBWVMiLCAgIlJBRF9SRUdJT05BTF9ET1NFX0NHWSIsCiAgICAgICAgICAgICAgIlJBRF9CT09TVF9ET1NFX0NHWSIsICJSQURfRUxBUFNFRF9SWF9EQVlTIiwgIkRYX1NZU1RFTUlDX1NUQVJURURfREFZUyIsICJEWF9DSEVNT19TVEFSVEVEX0RBWVMiLCAKICAgICAgICAgICAgICAiRFhfSE9STU9ORV9TVEFSVEVEX0RBWVMiLCAiRFhfT1RIRVJfU1RBUlRFRF9EQVlTIiwgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsCiAgICAgICAgICAgICAgIlJBRF9OVU1fVFJFQVRfVk9MIikKCmRhdFtudW1fdmFyc10gPC0gbGFwcGx5KGRhdFtudW1fdmFyc10sIGFzLm51bWVyaWMpCgoKIyBjb252ZXJ0IGZhY3RvciB2YXJpYWJsZXMgZnJvbSBjaGFyYWN0ZXIgY2xhc3MgdG8gZmFjdG9yIGNsYXNzCnZhcnMgPC0gbmFtZXMoZGF0KQpmYWN0X3ZhcnMgPC0gdmFyc1shKHZhcnMgJWluJSBudW1fdmFycyldICMgYmFzaWNhbGx5IGFsbCBvZiB0aGUgbm9uLW51bWVyaWNzCgpkYXRbZmFjdF92YXJzXSA8LSBsYXBwbHkoZGF0W2ZhY3RfdmFyc10sIGFzLmNoYXJhY3RlcikKZGF0W2ZhY3RfdmFyc10gPC0gbGFwcGx5KGRhdFtmYWN0X3ZhcnNdLCBhcy5mYWN0b3IpCgpkYXQgPC0gZGF0ICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9UWVBFX0YgPSBmY3RfcmVjb2RlKEZBQ0lMSVRZX1RZUEVfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbW11bml0eSBDYW5jZXIgUHJvZ3JhbSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXByZWhlbnNpdmUgQ29tbSBDYSBQcm9ncmFtIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWNhZGVtaWMvUmVzZWFyY2ggUHJvZ3JhbSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVncmF0ZWQgTmV0d29yayBDYSBQcm9ncmFtIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIiID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX0xPQ0FUSU9OX0YgPSBmY3RfcmVjb2RlKEZBQ0lMSVRZX0xPQ0FUSU9OX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgRW5nbGFuZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pZGRsZSBBdGxhbnRpYyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXRoIEF0bGFudGljIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWFzdCBOb3J0aCBDZW50cmFsIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWFzdCBTb3V0aCBDZW50cmFsIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCBOb3J0aCBDZW50cmFsIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCBTb3V0aCBDZW50cmFsIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW91bnRhaW4iID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWNpZmljIiA9ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0IG9mIFVTIiA9ICIwIikpICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9HRU9HUkFQSFkgPSBmY3RfY29sbGFwc2UoRkFDSUxJVFlfTE9DQVRJT05fQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9ydGhlYXN0IiA9IGMoIjEiLCAiMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXRoIiA9IGMoIjMiLCAiNyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pZHdlc3QiID0gYygiNCIsICI1IiwgIjYiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IiA9IGMoIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEFHRV9GID0gY3V0KEFHRSwgYygwLCA1NCwgNjQsIDc0LCAxMDApKSkgJT4lCiAgICAgICAgbXV0YXRlKEFHRV80MCA9IGN1dChBR0UsIGMoMCwgNDAsIDEwMCkpKSAlPiUKICAgICAgICBtdXRhdGUoU0VYX0YgPSBmY3RfcmVjb2RlKFNFWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFsZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZlbWFsZSIgPSAiMiIpKSAlPiUKICAgICAgICBtdXRhdGUoUkFDRV9GID0gZmN0X2NvbGxhcHNlKFJBQ0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaXRlIiA9IGMoIjAxIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsYWNrIiA9IGMoIjAyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFzaWFuIiA9IGMoIjA0IiwgIjA1IiwgIjA2IiwgIjA3IiwgIjA4IiwgIjEwIiwgIjExIiwgIjEyIiwgIjEzIiwgIjE0IiwgIjE1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTYiLCAiMTciLCAiMjAiLCAiMjEiLCAiMjIiLCAiMjUiLCAiMjYiLCAiMjciLCAiMjgiLCAiMzAiLCAiMzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzMiIsICI5NiIsICI5NyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlci9VbmsiID0gYygiMDMiLCAiOTgiLCAiOTkiKSkpICU+JQogICAgICAgIG11dGF0ZShISVNQQU5JQyA9IGZjdF9jb2xsYXBzZShTUEFOSVNIX0hJU1BBTklDX09SSUdJTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gYygiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKElOU1VSQU5DRV9GID0gZmN0X3JlY29kZShJTlNVUkFOQ0VfU1RBVFVTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJpdmF0ZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lZGljYWlkIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVkaWNhcmUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBHb3Zlcm5tZW50IiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoSU5TVVJBTkNFX0YgPSBmY3RfcmVsZXZlbChJTlNVUkFOQ0VfRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJpdmF0ZSIpKSAlPiUKICAgICAgICBtdXRhdGUoSU5DT01FX0YgPSBmY3RfcmVjb2RlKE1FRF9JTkNfUVVBUl8xMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVzcyB0aGFuICQzOCwwMDAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkMzgsMDAwIC0gJDQ3LDk5OSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ0OCwwMDAgLSAkNjIsOTk5IiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDYzLDAwMCArIiA9ICI0IikpICU+JQogICAgICAgIG11dGF0ZShFRFVDQVRJT05fRiA9IGZjdF9yZWNvZGUoTk9fSFNEX1FVQVJfMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMjElIG9yIG1vcmUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEzIC0gMjAuOSUiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjcgLSAxMi45JSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVzcyB0aGFuIDclIiA9ICI0IikpICU+JQogICAgICAgIG11dGF0ZShVX1JfRiA9IGZjdF9jb2xsYXBzZShVUl9DRF8xMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ldHJvIiA9IGMoIjEiLCAiMiIsICIzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcmJhbiIgPSBjKCI0IiwgIjUiLCAiNiIsICI3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdXJhbCIgPSBjKCI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShDTEFTU19PRl9DQVNFX0YgPSBmY3RfY29sbGFwc2UoQ0xBU1NfT0ZfQ0FTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbF9QYXJ0X1ByaW0gPSBjKCIxMCIsICIxMSIsICIxMiIsICIxMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTQiLCAiMjAiLCAiMjEiLCAiMjIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyX0ZhY2lsaXR5ID0gYygiMDAiKSkpICU+JQogICAgICAgIG11dGF0ZShHUkFERV9GID0gZmN0X3JlY29kZShHUkFERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJOiBXZWxsIERpZmYiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElJOiBNb2QgRGlmZiIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSUlJOiBQb29yIERpZmYiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElWOiBVbmRpZmYvQW5hcGxhc3RpYyIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTkEvVW5rb3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRiA9IGZjdF9pbmZyZXEoSElTVE9MT0dZKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1RPTE9HWV9GID0gZmFjdG9yKEhJU1RPTE9HWV9GKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1RPTE9HWV9GX0xJTSA9IGZjdF9sdW1wKEhJU1RPTE9HWV9GLCBwcm9wID0gMC4wNSkpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9UID0gZmN0X3JlY29kZShUTk1fQ0xJTl9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fVCA9IGZjdF9yZWxldmVsKFROTV9DTElOX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fTiA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX00gPSBmY3RfcmVjb2RlKFROTV9DTElOX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9UID0gZmN0X3JlY29kZShUTk1fUEFUSF9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfVCA9IGZjdF9yZWxldmVsKFROTV9QQVRIX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfTiA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX00gPSBmY3RfcmVjb2RlKFROTV9QQVRIX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9TVEFHRV9HUk9VUCA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fU1RBR0VfR1JPVVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9TVEFHRV9HUk9VUCA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfU1RBR0VfR1JPVVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShNQVJHSU5TID0gZmN0X3JlY29kZShSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSZXNpZHVhbCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXNpZHVhbCwgTk9TIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pY3Jvc2NvcGljIFJlc2lkIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hY3Jvc2NvcGljIFJlc2lkIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vdCBldmFsdWFibGUiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZyIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShNQVJHSU5TX1lOID0gZmN0X2NvbGxhcHNlKFJYX1NVTU1fU1VSR0lDQUxfTUFSR0lOUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjEiLCAiMiIsICIzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZy9VbmsvTkEiID0gYygiNyIsICI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShSRUFETV9IT1NQXzMwX0RBWVNfRiA9IGZjdF9yZWNvZGUoUkVBRE1fSE9TUF8zMF9EQVlTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vX1N1cmdfb3JfTm9fUmVhZG1pdCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5wbGFuX1JlYWRtaXRfU2FtZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxhbl9SZWFkbWl0X1NhbWUiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsYW5VbnBsYW5fU2FtZSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoUlhfU1VNTV9SQURJQVRJT05fRiA9IGZjdF9yZWNvZGUoUlhfU1VNTV9SQURJQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJlYW0gUmFkaWF0aW9uIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlvYWN0aXZlIEltcGxhbnRzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlvaXNvdG9wZXMiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmVhbSArIEltcCBvciBJc290b3BlcyIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpYXRpb24sIE5PUyIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShQVUZfMzBfREFZX01PUlRfQ0RfRiA9IGZjdF9yZWNvZGUoUFVGXzMwX0RBWV9NT1JUX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsaXZlXzMwIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWFkXzMwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShQVUZfOTBfREFZX01PUlRfQ0RfRiA9IGZjdF9yZWNvZGUoUFVGXzkwX0RBWV9NT1JUX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsaXZlXzkwIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWFkXzkwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GID0gZmN0X3JlY29kZShMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ19MeW1waFZhc2NfSW52IiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvc19MdW1waFZhc2NfSW52IiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YgPSBmY3RfcmVjb2RlKFJYX0hPU1BfU1VSR19BUFBSXzIwMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vX1N1cmciID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSb2JvdF9Bc3Npc3QiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSb2JvdF90b19PcGVuIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5kb19MYXAiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmRvX0xhcF90b19PcGVuIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3Blbl9Vbmtub3duIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoQWxsID0gIkFsbCIpICU+JQogICAgICAgIG11dGF0ZShBbGwgPSBmYWN0b3IoQWxsKSkgJT4lCiAgICAgICAgbXV0YXRlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWV9GID0gZmN0X3JlY29kZShSRUFTT05fRk9SX05PX1NVUkdFUlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBwZXJmb3JtZWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgbm90IHJlY29tbWVuZGVkIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnIGR1ZSB0byBwdCBmYWN0b3JzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnLCBwdCBkaWVkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgbm90IGRvbmUiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCBwdCByZWZ1c2VkIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgdW5rIGlmIGRvbmUiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdFUllfWU4gPSBpZmVsc2UoUkVBU09OX0ZPUl9OT19TVVJHRVJZID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkVBU09OX0ZPUl9OT19TVVJHRVJZID09ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVrbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfVEYgPSBjYXNlX3doZW4oU1VSR0VSWV9ZTiA9PSAiWWVzIiB+IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VSR0VSWV9ZTiA9PSAiTm8iIH4gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IE5BKSkgICU+JQogICAgICAgIG11dGF0ZShSRUFTT05fRk9SX05PX1JBRElBVElPTl9GID0gZmN0X3JlY29kZShSRUFTT05fRk9SX05PX1JBRElBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcGVyZm9ybWVkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgbm90IHJlY29tbWVuZGVkIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSYWQgZHVlIHRvIHB0IGZhY3RvcnMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJhZCwgcHQgZGllZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgbm90IGRvbmUiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIHB0IHJlZnVzZWQiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIHVuayBpZiBkb25lIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShSQURJQVRJT05fWU4gPSBpZmVsc2UoUkVBU09OX0ZPUl9OT19SQURJQVRJT04gPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSRUFTT05fRk9SX05PX1JBRElBVElPTiA9PSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHUkFEX1NFUV9GID0gZmN0X3JlY29kZShSWF9TVU1NX1NVUkdSQURfU0VRLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBvciBTdXJnIG9yIFJhZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIFN1cmciID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBiZWZvcmUgUmFkIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmciID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50cmFvcCBSYWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50cmFvcCBSYWQgcGx1cyBvdGhlciIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVEgPSBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgQWxvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgQWxvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHJlYXRtZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIikpKSkpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUSA9IGZjdF9yZWxldmVsKFNVUkdfUkFEX1NFUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgQWxvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgQWxvbmUiKSkgJT4lCiAgICAgICAgbXV0YXRlKENIRU1PX1lOID0gZmN0X2NvbGxhcHNlKFJYX1NVTU1fQ0hFTU8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwMCIsICI4MiIsICI4NSIsICI4NiIsICI4NyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjAxIiwgIjAyIiwgIjAzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iID0gYygiODgiLCAiOTkiKSkpICU+JQogICAgICAgIG11dGF0ZShJTU1VTk9fWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9JTU1VTk9USEVSQVBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMDAiLCAiODIiLCAiODUiLCAiODYiLCAiODciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIwMSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiA9IGMoIjg4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRX0MgPSBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnLCBObyByYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCwgTm8gU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFN1cmcsIE5vIFJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcsIE5vIHJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkLCBObyBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gU3VyZywgTm8gUmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVFfQyA9IGZjdF9pbmZyZXEoU1VSR19SQURfU0VRX0MpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gYXMubnVtZXJpYyhUVU1PUl9TSVpFKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGlmZWxzZShUX1NJWkUgPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPiAwICYgVF9TSVpFIDwgMTAgfCBUX1NJWkUgPT0gOTkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPCAxIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAxMCAmIFRfU0laRSA8IDIwIHwgVF9TSVpFID09IDk5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxLTIgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAyMCAmIFRfU0laRSA8IDMwIHwgVF9TSVpFID09IDk5MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMi0zIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDMwICYgVF9TSVpFIDwgNDAgfCBUX1NJWkUgPT0gOTk0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA0MCAmIFRfU0laRSA8IDUwIHwgVF9TSVpFID09IDk5NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LTUgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA1MCAmIFRfU0laRSA8IDYwIHwgVF9TSVpFID09IDk5NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNS02IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDYwICYgVF9TSVpFIDw9IDk4NyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9TSVpFID09IDk4MCB8IFRfU0laRSA9PSA5ODkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfU0laRSA9PSA5OTcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj42IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID09IDk4OCB8IFRfU0laRSA9PSA5OTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOQV91bmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zY29waWMgZm9jdXMiKSkpKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gZmFjdG9yKFRfU0laRSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBmY3RfcmVsZXZlbChUX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLCAiTWljcm9zY29waWMgZm9jdXMiLCAiPCAxIGNtIiwgIjEtMiBjbSIsICIyLTMgY20iLCAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQtNSBjbSIsICI1LTYgY20iLCAiPjYgY20iLCAiTkFfdW5rIikpICU+JQogICAgICAgIG11dGF0ZShtZXRzX2F0X2R4ID0gY2FzZV93aGVuKENTX01FVFNfRFhfTFVORyA9PSAiMSIgfiAiTHVuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9CT05FID09ICIxIiB+ICJCb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0JSQUlOID09ICIxIiB+ICJCcmFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9MSVZFUiA9PSAiMSIgfiAiTGl2ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAiTm9uZS9PdGhlci9VbmsvTkEiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1FRElDQUlEX0VYUE5fQ09ERSA9IGZjdF9yZWNvZGUoTUVESUNBSURfRVhQTl9DT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb24tRXhwYW5zaW9uIFN0YXRlIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cHByZXNzZWQgZm9yIEFnZXMgMCAtIDM5IiA9ICI5IikpICAlPiUKICAgICAgICBtdXRhdGUoRVhQTl9HUk9VUCA9ICBjYXNlX3doZW4oTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxNCIsICIyMDE1IikgfiAiUG9zdC1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLCAiMjAxNSIpIH4gIlBvc3QtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgIjIwMDkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIk5vbi1FeHBhbnNpb24gU3RhdGUiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTQiLCAiMjAxNSIpIH4gIkV4Y2x1ZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFID09ICJTdXBwcmVzc2VkIGZvciBBZ2VzIDAgLSAzOSIgfiAiRXhjbHVkZSIpKSAlPiUKICAKICBtdXRhdGUocHJlXzIwMTQgPSBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSkgJT4lCiAgCiAgbXV0YXRlKG1ldHNfYXRfZHhfRiA9IGlmZWxzZShtZXRzX2F0X2R4ID09ICJOb25lL090aGVyL1Vuay9OQSIsIEZBTFNFLCBUUlVFKSkgJT4lIAogIAogIG11dGF0ZShUeF9ZTiA9IGlmZWxzZShTVVJHX1JBRF9TRVEgPT0gIk5vIFRyZWF0bWVudCIgJiBDSEVNT19ZTiA9PSAiTm8iICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU1NVU5PX1lOID09ICJObyIsIEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKENIRU1PX1lOID09ICJVa24iLCBOQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKSkpCgpmYWN0X3ZhcnNfMiA8LSBjKCJGQUNJTElUWV9UWVBFX0YiLCAiRkFDSUxJVFlfTE9DQVRJT05fRiIsICJBR0VfRiIsICJTRVhfRiIsICJSQUNFX0YiLAogICAgICAgICAgICAgICAgICJISVNQQU5JQyIsICJJTlNVUkFOQ0VfRiIsICJJTkNPTUVfRiIsICJFRFVDQVRJT05fRiIsICJVX1JfRiIsCiAgICAgICAgICAgICAgICAgIkNEQ0NfVE9UQUxfQkVTVCIsICJDTEFTU19PRl9DQVNFX0YiLCAiWUVBUl9PRl9ESUFHTk9TSVMiLCAiUFJJTUFSWV9TSVRFIiwgIkhJU1RPTE9HWSIsCiAgICAgICAgICAgICAgICAgIkJFSEFWSU9SIiwgIkdSQURFX0YiLCAiVE5NX0NMSU5fVCIsICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLAogICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsCiAgICAgICAgICAgICAgICAgIk1BUkdJTlMiLCAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCAiUlhfU1VNTV9SQURJQVRJT05fRiIsICJQVUZfMzBfREFZX01PUlRfQ0RfRiIsCiAgICAgICAgICAgICAgICAgIlBVRl85MF9EQVlfTU9SVF9DRF9GIiwgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIm1ldHNfYXRfZHgiKQoKCmRhdCA8LSBkYXQgJT4lCiAgICAgICAgbXV0YXRlX2F0KGZhY3RfdmFyc18yLCBmdW5zKGZhY3RvciguKSkpCgpgYGAKCgojIEV4dHJhY3QgRGF0YSBvZiBJbnRlcmVzdAoKYGBge3J9CgoKIyBOb24tSG9kZ2tpbiBMeW1waG9tYSBTaXRlcwpzaXRlX2NvZGUgPC0gYyggCiNhZGRpdGlvbmFsIHNpdGVzCgogI2xpcCAgCiAgIkMwMDAiLCAiQzAwMSIsICJDMDAyIiwgIkMwMDMiLCAiQzAwNCIsICJDMDA1IiwiQzAwNiIsICJDMDA4IiwiQzAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiNza2luL21lbGFub21hCiAgIkM0NDAiLCAiQzQ0MSIsICJDNDQyIiwgIkM0NDMiLCAiQzQ0NCIsICJDNDQ1IiwgIkM0NDYiLCAiQzQ0NyIsICJDNDQ4IiwgIkM0NDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNicmVhc3QgLSBuaXBwbGUKICAiQzUwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojdmFnaW5hL3Z1bHZhCiAgIkM1MTAiLCAiQzUxMSIsICJDNTEyIiwgIkM1MTgiLCAiQzUxOSIsICJDNTI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiNwZW5pcwogIkM2MDAiLCAiQzYwMSIsICJDNjAyIiwgIkM2MDgiLCAiQzYwOSIsICJDNjM5IikKCiNteWNvc2lzIGZ1bmdvaWRlcywgU2V6YXJ5IHN5bmRyb21lLCBzdWJjdXRhbmVvdXMgcGFubmljdWxpdGlzLWxpa2UgVC1jZWxsIGx5bXBob21hLAojY3V0YW5lb3VzIFQtY2VsbCBseW1waG9tYSwgTk9TLCBwcmltYXJ5IGN1dGFuZW91cyBDRDMwK1QtY2VsbCBseW1waG9tYSwgCiNOSy9ULWNlbGwgbHltcGhvbWEsIHByaW1hcnkgY3V0YW5lb3VzIGdhbW1hLWRlbHRhIFQtY2VsbCBseW1waG9tYSwgCiNhbmQgYmxhc3RpYyBOSyBjZWxsIGx5bXBob21hLCByZXNwZWN0aXZlbHkKCiMiOTcwMCIgPSBNeWNvc2lzIEZ1bmdvaWRlcwogICMgcGFnZXRvaWQgcmV0aWN1bG9zaXMKCiMiOTcwMSIgPSBTZXphcnkgU3luZHJvbWUKICAjIFNlemFyeSBkaXNlYXNlCgojIjk3MDgiID0gU3ViY3V0YW5lb3VzIHBhbm5pY3VsaXRpc2xpa2UgVC1jZWxsIGx5bXBob21hCgojIjk3MDkiID0gQ3V0YW5lb3VzIFQtY2VsbCBseW1waG9tYSwgTk9TIAogICMgQ3V0YW5lb3VzIGx5bXBob21hLCBOT1MgKEM0NC5fKTsgUHJpbWFyeSBjdXRhbmVvdXMgQ0Q0LXBvc2l0aXZlIHNtYWxsL21lZGl1bQogICMgVC1jZWxsIGx5bXBob21hOyBQcmltYXJ5IGN1dGFuZW91cyBDRDgtcG9zaXRpdmUgYWdncmVzc2l2ZQogICMgZXBpZGVybW90cm9waWMgY3l0b3RveGljIFQtY2VsbCBseW1waG9tYQoKIyI5NzE4IiA9IFByaW1hcnkgY3V0YW5lb3VzIENEMzArIFQtY2VsbCBseW1waG9wcm9saWZlcmF0aXZlIGRpc29yZGVyIAogICMgTHltcGhvbWF0b2lkIHBhcHVsb3NpcyAoQzQ0Ll8pLCBQcmltYXJ5IGN1dGFuZW91cyBhbmFwbGFzdGljIGxhcmdlIGNlbGwsCiAgIyBseW1waG9tYSAoQzQ0Ll8pLCBQcmltYXJ5IGN1dGFuZW91cyBDRDMwKyBsYXJnZSBULWNlbGwgbHltcGhvbWEgKEM0NC5fKQoKCiMiOTcyNiIgPSBQcmltYXJ5IGN1dGFuZW91cyBnYW1tYS1kZWx0YSBULWNlbGwgbHltcGhvbWEKCmhpc3RvX2NvZGUgPC0gYygiOTcwOCIpCgpiZWhhdmlvcl9jb2RlIDwtIGMoIjMiKQoKZGF0YSA8LSBkYXQgJT4lCiAgICAgICAgZmlsdGVyKEJFSEFWSU9SICVpbiUgYmVoYXZpb3JfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKFBSSU1BUllfU0lURSAlaW4lIHNpdGVfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKEhJU1RPTE9HWSAlaW4lIGhpc3RvX2NvZGUpICU+JQogICAgICAgICNmaWx0ZXIoQUdFID49IDE4KSAlPiUKICAgICAgICBmaWx0ZXIoaXMubmEoUFVGX1ZJVEFMX1NUQVRVUykgPT0gRkFMU0UpICU+JQogICAgICAgIGZpbHRlcihpcy5uYShEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMpID09IEZBTFNFKSAgJT4lCiAgICAgICAgZmlsdGVyKFNFUVVFTkNFX05VTUJFUiA9PSAiMDAiKSAKCiNmaWxlX3BhdGggPC0gYygiL1VzZXJzL2JlYXN0YXRsaWZlL0dvb2dsZSBEcml2ZS9QZW5uL1Jlc2VhcmNoL0JhcmJpZXJpL05DREIiKQojc2F2ZShkYXRhLAojICAgICAgZmlsZSA9IHBhc3RlMChmaWxlX3BhdGgsICIvQ1RDTF9kYXRhLlJkYSIpKQpgYGAKCmBgYHtyIGxvYWREYXRhfQojbG9hZCgiU1BUQ0xfZGF0YS5SZGEiKQpgYGAKCgpEYXRhIGluY2x1ZGluZyBza2luIHR1bW9ycyB3YXMgb2J0YWluZWQgZnJvbSB0aGUgTkNCRCBvbiBPY3RvYmVyIDcsIDIwMTkuIENhc2VzIHRoYXQgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIGFuYWx5c2lzIHdlcmUgdGhvc2Ugd2l0aDoKCjEuIFNpdGUgY29kZXM6IGByIHNpdGVfY29kZWAKMi4gSGlzdG9sb2d5IGNvZGVzOiBgciBoaXN0b19jb2RlYAozLiBCZWhhdmlvciBjb2RlczogYHIgYmVoYXZpb3JfY29kZWAKCgpQYXRpZW50cyB3ZXJlIGV4Y2x1ZGVkIGlmIHRoZXkgZGlkbid0IGhhdmUgdmFsdWVzIGZvciBlaXRoZXIgZm9sbG93IHVwIG9yIHZpdGFsIHN0YXR1cy4KClBhdGllbnRzIHdlcmUgZXhjbHVkZWQgaWYgdGhleSBoYWQgc3VyZ2VyeSB0byBhIGRpc3RhbnQgc2l0ZSB1c2luZyBgUlhfU1VNTV9TVVJHX09USF9SRUdESVNgLiBUaGlzIHdhcyBkb25lIHRvIGF2b2lkIGNvbmZvdW5kaW5nIG9mIGRpZmZlcmVudCBzdXJnaWNhbCBwcm9jZWR1cmVzLiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHN1cmdlcnkgYXQgdGhlIHByaW1hcnkgc2l0ZS4gVGhlc2UgZGlzdGFudCBzaXRlIHN1cmdlcmllcyB3ZXJlIGJlaW5nIGNvdW50ZWQgaW4gdGhlIHN1cmdlcnkvcmFkaWF0aW9uIHNlcXVlbmNlIGFuZCB0aHVzIHRvIHNpbXBsaWZ5IGFuYWx5c2lzIHRoZXkgd2VyZSByZW1vdmVkLiAKCmBgYHtyfQoKZGF0YSAlPiUKICAgICAgICBDcmVhdGVUYWJsZU9uZShkYXRhID0gLiwKICAgICAgICAgICAgICAgICAgICAgdmFycyA9IGMoIlJYX1NVTU1fU1VSR19PVEhfUkVHRElTIiksCiAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVOQSA9IFRSVUUpICU+JQogICAgICAgIHByaW50KC4sCiAgICAgICAgICAgICAgc2hvd0FsbExldmVscyA9IFRSVUUpCgpkYXRhIDwtIGRhdGEgJT4lCiAgICAgICAgZmlsdGVyKFJYX1NVTU1fU1VSR19PVEhfUkVHRElTID09ICIwIikgCmBgYAoKClJhY2Ugd2FzIGdyb3VwZWQgYXMgd2hpdGUsIGJsYWNrLCBhc2lhbiwgb3RoZXIvdW5rbm93bgpTdGFnZSB3YXMgZ3JvdXBlZCBpbnRvIDAsIEksIElJLCBJSUksIElWLCBOQV9Vbmtub3duLCBzdGFnZSAwIHdhcyByZW1vdmVkCldoZXRoZXIgc3VyZ2VyeSB3YXMgcGVyZm9ybWVkIHdhcyBiYXNlZCBvbiB0aGUgYFJFQVNPTl9GT1JfTk9fU1VSR0VSWWAgdmFyaWFibGUuIFRoZSBgU1VSR0VSWV9ZTmAgdmFyaWFibGUgd2FzIGNsYXNzaWZpZWQgYXMgJ1llcycsICdObycsIG9yICdVbmtub3duJy4KCgpXaGV0aGVyIHJhZGlhdGlvbiB3YXMgcGVyZm9ybWVkIHdhcyBiYXNlZCBvbiB0aGUgYFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OYCB2YXJpYWJsZS4gVGhlIGBSQURJQVRJT05fWU5gIHZhcmlhYmxlIHdhcyBjbGFzc2lmaWVkIGFzICdZZXMnLCAnTm8nLCBvciAnVW5rbm93bicuCgoKCiNUYWJsZSBvZiB2YXJpYWJsZXMgZm9yIGFsbCBjYXNlczoKCmBgYHtyfQpkYXRhIDwtIGRhdGEgJT4lIGRyb3BsZXZlbHMoKQoKcF90YWJsZShkYXRhLAogICAgICAgIHZhcnMgPSBjKCJGQUNJTElUWV9UWVBFX0YiLCAiRkFDSUxJVFlfTE9DQVRJT05fRiIsICJGQUNJTElUWV9HRU9HUkFQSFkiLCAgIkFHRSIsICJBR0VfRiIsICJBR0VfNDAiLAogICAgICAgICAgICAgICAgICJTRVhfRiIsICJSQUNFX0YiLCAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAKICAgICAgICAgICAgICAgICAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLCAiQ1JPV0ZMWSIsICJDRENDX1RPVEFMX0JFU1QiLAogICAgICAgICAgICAgICAgICJTSVRFX1RFWFQiLCAgIkhJU1RPTE9HWSIsICJCRUhBVklPUiIsICJHUkFERV9GIiwgCiAgICAgICAgICAgICAgICAgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIlROTV9DTElOX1QiLCAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwKICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLAogICAgICAgICAgICAgICAgICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICAgICJEWF9ERUZTVVJHX1NUQVJURURfREFZUyIsICJNQVJHSU5TIiwgIk1BUkdJTlNfWU4iLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsCiAgICAgICAgICAgICAgICAgIlJFQURNX0hPU1BfMzBfREFZU19GIiwgIlJYX1NVTU1fUkFESUFUSU9OX0YiLCAiUFVGXzMwX0RBWV9NT1JUX0NEX0YiLAogICAgICAgICAgICAgICAgICJQVUZfOTBfREFZX01PUlRfQ0RfRiIsICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLCAKICAgICAgICAgICAgICAgICAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YiLCAiU1VSR19SQURfU0VRIiwKICAgICAgICAgICAgICAgICAiU1VSR19SQURfU0VRX0MiLCAiU1VSR0VSWV9ZTiIsICJSQURJQVRJT05fWU4iLCAiQ0hFTU9fWU4iLCAiSU1NVU5PX1lOIiwgIlR4X1lOIiwgIm1ldHNfYXRfZHgiLAogICAgICAgICAgICAgICAgICJNRURJQ0FJRF9FWFBOX0NPREUiLCAiRVhQTl9HUk9VUCIsICJZRUFSX09GX0RJQUdOT1NJUyIpKQpgYGAKCgoKYGBge3J9CgpwcmVFeHBNZWRpY2FyZSAgPC0gbnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUHJlLUV4cGFuc2lvbiIgJiBJTlNVUkFOQ0VfRiA9PSAiTWVkaWNhcmUiKSkKcG9zdEV4cE1lZGljYXJlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIiAmIElOU1VSQU5DRV9GID09ICJNZWRpY2FyZSIpKQoKIyBwID0gMC4yNSB3aGVuIGNvbXBhcmluZyBjaGFuZ2UgaW4gcHJvcG9ydGlvbiBvZiBwYXRpZW50cyB3aXRoIE1lZGljYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgQUNBIGV4cGFuc2lvbgpwcm9wLnRlc3QoYyhwcmVFeHBNZWRpY2FyZSwgcG9zdEV4cE1lZGljYXJlKSwgCiAgICAgICAgICBjKG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSksIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikpKSkKCnByZUV4cE5vSW5zdXJhbmNlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoSU5TVVJBTkNFX0YgPT0gIk5vbmUiKSkKcG9zdEV4cE5vSW5zdXJhbmNlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihJTlNVUkFOQ0VfRiA9PSAiTm9uZSIpKQoKIyBTaWduaWZpY2FudCBkZWNyZWFzZSBpbiB0aGUgb3ZlcmFsbCBwcm9wb3J0aW9uIG9mIHBhdGllbnRzIHdpdGhvdXQgaW5zdXJhbmNlIGFmdGVyIEFDQSBleHBhbnNpb24gCnByb3AudGVzdChjKHByZUV4cE5vSW5zdXJhbmNlLCBwb3N0RXhwTm9JbnN1cmFuY2UpLCAKICAgICAgICAgIGMobnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUHJlLUV4cGFuc2lvbiIpKSwgbnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUG9zdC1FeHBhbnNpb24iKSkpKQoKcF90YWJsZShub19FeGNsdWRlcywgc3RyYXRhID0gIkVYUE5fR1JPVVAiLCB2YXJzID0gIkRYX1JYX1NUQVJURURfREFZUyIpCgpkYXRhIDwtIGRhdGEgJT4lIG11dGF0ZShJbnN1cmVkID0gSU5TVVJBTkNFX0YgIT0gIlVua25vd24iKQoKYGBgCgoKCgojS2FwbGFuIE1laWVyIEFuYWx5c2lzCgoKIyNBbGwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFsbCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IFR5cGUKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfVFlQRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgTG9jYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBHZW9ncmFwaHkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0dFT0dSQVBIWSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0FnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNBZ2UgR3JvdXAKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFXzQwIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjR2VuZGVyCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTRVhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JBQ0VfRgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkFDRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSGlzcGFuaWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkhJU1BBTklDIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSW5zdXJhbmNlIFN0YXR1cwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiSU5TVVJBTkNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNPdmVyYWxsIFN1cnZpdmFsIHByZS9wb3N0LUFDQSBleHBhbnNpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVYUE5fR1JPVVAiLCBkYXRhX2ltcCA9IG5vX0V4Y2x1ZGVzKQpgYGAKCgo8IS0tICMjSW5jb21lIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gY2xhc3MoZGF0YSRJTkNPTUVfRikgLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJJTkNPTUVfRiIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNFZHVjYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVEVUNBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjVXJiYW4vUnVyYWwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlVfUl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xhc3MgKHRyZWF0bWVudCBhdCBwZXJmb3JtaW5nIGZhY2lsaXR5KQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0xBU1NfT0ZfQ0FTRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjWWVhcgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiWUVBUl9PRl9ESUFHTk9TSVMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQcmltYXJ5IFNpdGUKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNJVEVfVEVYVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNIaXN0b2xvZ3kKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJISVNUT0xPR1lfRl9MSU0iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKPCEtLSAjI0JlaGF2aW9yIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJCRUhBVklPUiIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNHcmFkZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkdSQURFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGluaWNhbCBUIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9UIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgTiBTdGFnZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjQ2xpbmljYWwgTSBTdGFnZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fTSIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNDbGluaWNhbCBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIFQgU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX1QiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIE4gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIE0gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX00iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIFN0YWdlIEdyb3VwCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01hcmdpbnMKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOUyIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01hcmdpbnMgWWVzL05vCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJNQVJHSU5TX1lOIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjMzAgRGF5IFJlYWRtaXNzaW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JhZGlhdGlvbiBUeXBlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSWF9TVU1NX1JBRElBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI0x5bXBob3Zhc2N1bGFyIEludmFzaW9uCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0VuZG9zY29waWMvUm9ib3RpYwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBSYWRpYXRpb24gU2VxdWVuY2UgCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTVVJHX1JBRF9TRVEiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNTdXJnZXJ5IFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR0VSWV9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JhZGlhdGlvbiBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJBRElBVElPTl9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NoZW1vIFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0hFTU9fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjVHJlYXRtZW50IFllcy9ObwpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUeF9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01ldGFzdGFzZXMgYXQgRHgKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAibWV0c19hdF9keF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCjwhLS0gIyNUdW1vciBTaXplIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJUX1NJWkUiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiNUdW1vciBzcGVjaWZpYyBWYXJpYWJsZXMKCgojIyNOb2RlIFNpemUKCgojQ294IFByb3BvcnRpb25hbCBIYXphcmQgUmF0aW8KCiMjTW9kZWwgIzEKCiMjI0Z1bGwgYW5hbHlzaXMKCmBgYHtyfQptb2RlbF9vbmUgPC0gY294cGgoU3VydihEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMsIFBVRl9WSVRBTF9TVEFUVVMgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgfiBTVVJHX1JBRF9TRVEgKyBJTlNVUkFOQ0VfRiArIEFHRSArIFNFWF9GICsgUkFDRV9GICsgSU5DT01FX0YgKyBVX1JfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YsCiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhKQptb2RlbF9vbmUgJT4lIHN1bW1hcnkoKQoKCmBgYAoKIyMjU3VtbWFyeSBvZiBNb2RlbAoKYGBge3J9Cm1vZGVsX29uZSAlPiUKICAgICAgICB0aWR5KC4sIGV4cG9uZW50aWF0ZSA9IFRSVUUpICU+JQogICAgICAgIHNlbGVjdCh0ZXJtLCBlc3RpbWF0ZSwgY29uZi5sb3csIGNvbmYuaGlnaCwgcC52YWx1ZSkgJT4lCiAgICAgICAgcmVuYW1lKFZhcmlhYmxlID0gdGVybSwKICAgICAgICAgICAgICAgSGF6YXJkX1JhdGlvID0gZXN0aW1hdGUpICU+JQogICAgICAgIHRibF9kZiAlPiUKICAgICAgICBwcmludChuID0gbnJvdyguKSkKCmBgYAoKCiMjIExpbmVhciBSZWdyZXNzaW9uIApgYGB7cn0KCiNvbmx5IGluY2x1ZGUgcm93cyB3aXRoIGtub3duIHRyZWF0bWVudCBpbmZvcm1hdGlvbiwgbiA9IDgyLiA1IGV4Y2x1ZGVkLgpkYXRhMiA8LSBkYXRhICU+JSBmaWx0ZXIoU1VSR0VSWV9ZTiAhPSAiVWtuIiAmIFJBRElBVElPTl9ZTiAhPSAiVWtuIgogICAgICAgICAgICAgICAgICAgICAgICAgJiBDSEVNT19ZTiAhPSAiVWtuIikKCiMgaW5jbHVkZSBvbmx5IHZhcmlhYmxlcyB3aXRoIGRhdGEgYXZhaWxhYmxlIGZvciBhdCBsZWFzdCA3NSUgb2YgY2FzZXMgCiMgZnJvbSB0aGUgZm9sbG93aW5nIHNldCBvZiB2YXJpYWJsZXMgb2YgaW50ZXJlc3Q6CgojIyBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9HRU9HUkFQSFkgKyBDUk9XRkxZICsgCiMjICAgICAgICAgICAgICAgICBEWF9TVEFHSU5HX1BST0NfREFZUyArIAojIyAgICAgICAgICAgICAgICAgQ0hFTU9fWU4gKyBSQURJQVRJT05fWU4gKyBTVVJHRVJZX1lOICsgSU1NVU5PX1lOICsKIyMgICAgICAgICAgICAgICAgIEFHRSArIFNFWF9GICsgUkFDRV9GICsgSElTUEFOSUMgKyBJTlNVUkFOQ0VfRiArIElOQ09NRV9GICsgCiMjICAgICAgICAgICAgICAgICBFRFVDQVRJT05fRiArIFlFQVJfT0ZfRElBR05PU0lTICsgU0lURV9URVhUICsgR1JBREVfRgoKbGVuZ3RoKHdoaWNoKGlzLm5hKGRhdGEyJEZBQ0lMSVRZX0xPQ0FUSU9OX0YpKSkKCiMgZXhjbHVkZWQgdGhlIGZvbGxvd2luZyBpbiB0aGlzIGFuYWx5c2lzIGR1ZSB0byBtaXNzaW5nIGRhdGE6IAojIEZBQ0lMSVRZX1RZUEVfRiwgRkFDSUxJVFlfR0VPR1JBUEhZX0YsIEZBQ0lMSVRZX0xPQ0FUSU9OX0YsIAojIChEWF9TVEFHSU5HX1BST0NfREFZUyBtaXNzaW5nIGluIDE3IGNhc2VzLCBidXQgc3RpbGwgaW5jbHVkZWQgaW4gbW9kZWwpCgpmaXRfc3VydiA8LSBsbShEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMgfgogICAgICAgICAgICAgICAgIERYX1NUQUdJTkdfUFJPQ19EQVlTICsgQ1JPV0ZMWSArIAogICAgICAgICAgICAgICAgIENIRU1PX1lOICsKICAgICAgICAgICAgICAgICBTRVhfRiArIFJBQ0VfRiArIAogICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICsgU0lURV9URVhUICsgR1JBREVfRiwKICAgZGF0YSA9IGRhdGEyKQoKc3VtbWFyeShmaXRfc3VydikgIyBSXjIgPSAuMzE1NSwgcCA9IDAuMDA3MzYyCgoKIyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3ZXJlIGV4Y2x1ZGVkIHRvIAojIGltcHJvdmUgdGhlIFItc3F1YXJlZCBvZiB0aGUgcmVncmVzc2lvbiAoaW5pdGlhbGx5IFJeMiA9IDAuMTc4NSk6CiMgUkFESUFUSU9OX1lOLCBTVVJHRVJZX1lOLCBJTU1VTk9fWU4sIElOQ09NRV9GLCBJTlNVUkFOQ0VfRiwgRURVQ0FUSU9OX0YsIEFHRQpgYGAKIyBQcmVkaWN0aW9uIExvZ2lzdGljIFJlZ3Jlc3Npb24gTW9kZWxzCgojIyBTdXJnZXJ5CmBgYHtyfQoKbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iKSAlPiUgCiAgZHJvcGxldmVscygpICU+JSAKICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGFzLmxvZ2ljYWwoU1VSR0VSWV9ZTikpCgpmaXRfc3VyZyA8LSBnbG0oU1VSR19URiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCnN1bW1hcnkoZml0X3N1cmcpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfc3VyZyksIGNvbmZpbnQuZGVmYXVsdChmaXRfc3VyZywgbGV2ZWwgPSAwLjk1KSkpCmBgYAoKIyMgQ2hlbW8KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoQ0hFTU9fWU4gIT0gIlVrbiIpICU+JSAKICBkcm9wbGV2ZWxzKCkgJT4lIAogIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9yZWNvZGUoQ0hFTU9fWU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgPSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiID0gIlllcyIpKSAlPiUgCiAgbXV0YXRlKENIRU1PX1lOID0gYXMuaW50ZWdlcihDSEVNT19ZTikpICU+JSAKICBtdXRhdGUoQ0hFTU9fWU4gPSBDSEVNT19ZTiAtIDEpCgpmaXRfY2hlbW8gPC0gZ2xtKENIRU1PX1lOIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBub19Va25zKQoKc3VtbWFyeShmaXRfY2hlbW8pCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfY2hlbW8pLCBjb25maW50LmRlZmF1bHQoZml0X2NoZW1vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBSYWRpYXRpb24KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoUkFESUFUSU9OX1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkgJT4lCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGZjdF9yZWNvZGUoUkFESUFUSU9OX1lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAiID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIiA9ICJZZXMiKSklPiUgCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGFzLmludGVnZXIoUkFESUFUSU9OX1lOKSkgJT4lIAogIG11dGF0ZShSQURJQVRJT05fWU4gPSBSQURJQVRJT05fWU4gLSAxKQoKCmZpdF9yYWRzIDwtIGdsbShSQURJQVRJT05fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfcmFkcykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9yYWRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9yYWRzLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBJbW11bm90aGVyYXB5CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKElNTVVOT19ZTiAhPSAiVWtuIikgJT4lCiAgZHJvcGxldmVscygpICU+JQogIG11dGF0ZShJTU1VTk9fWU4gPSBmY3RfcmVjb2RlKElNTVVOT19ZTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAiWWVzIikpJT4lIAogIG11dGF0ZShJTU1VTk9fWU4gPSBhcy5pbnRlZ2VyKElNTVVOT19ZTikpICU+JSAKICBtdXRhdGUoSU1NVU5PX1lOID0gSU1NVU5PX1lOIC0gMSkKCgpmaXRfaW1tdW5vIDwtIGdsbShJTU1VTk9fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfaW1tdW5vKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X2ltbXVubyksIGNvbmZpbnQuZGVmYXVsdChmaXRfaW1tdW5vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBBbnkgVHJlYXRtZW50CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKFR4X1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkKCgpmaXRfdHggPC0gZ2xtKFR4X1lOIH4gQUdFX0YgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfdHgpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfcmFkcyksIGNvbmZpbnQuZGVmYXVsdChmaXRfdHgsIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIE1ldGFzdGFzaXMgYXQgVGltZSBvZiBEaWFnbm9zaXMKYGBge3J9CgpmaXRfbWV0cyA8LSBnbG0obWV0c19hdF9keF9GIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShmaXRfbWV0cykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9tZXRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9tZXRzLCBsZXZlbCA9IDAuOTUpKSkKYGBg